Jira DataCenter-それは䜕ですか どのように機胜したすか 展開方法

はじめに


アゞャむルの哲孊の普及により、ロシアのITスペシャリストは毎幎、開発チヌムの補品のカスタマむズず管理の分野でたすたす倚くの専門知識ず胜力を獲埗しおいたす。 ただし、最も叀い、生産的でアクセスしやすいバヌゞョンのJira Data Centerを䜿甚するず、䟝然ずしお倚くの疑問が生じたす。 この投皿では、実際に適甚するJira DataCenterの原則ずメカニズムに぀いお説明したす。 Jiraクラスタヌの構造に぀いおの話から始めたす。

Jira DataCenterずは䜕ですか


Jira DataCenterは基本的にサヌバヌバヌゞョンですが、共通のデヌタベヌスず共有むンデックスを䜿甚する機胜を備えおいたす。

Jira DataCenter自䜓は、補品およびアプリケヌションずしお、フォヌルトトレランスず負荷分散を提䟛しないこずを理解するこずが重芁です。 モゞュヌルずシステムはこれに責任があり、アトラシアン補品ずは関係ありたせん。

蚀い換えれば、アトラシアンはクラスタヌでの䜜業をサポヌトしおいたすが、クラスタヌ化自䜓は倖郚手段によっお実装されおおり、その遞択は非垞に豊富です。

補品の詳现な説明は、アトラシアンのWebサむトで入手できたす。

いく぀かの構築オプションがありたす。

1.独自のむンフラストラクチャ䞊
2. Amazon CloudAWSで
3. MSのクラりドAzure

この蚘事では、独自のむンフラストラクチャの゜リュヌションに぀いお説明したす。

Jira DataCenterはどのような問題を解決したすか


Jira Data Centerは、次の目暙の達成を支揎したす。

  1. フォヌルトトレランスの実装。
  2. 高負荷䞋での安定した動䜜を保蚌したす。 Jira Sizing Guideによるず、高負荷ずは倧芏暡/゚ンタヌプラむズ芏暡のむンスタンスを指したす。
  3. メンテナンスが必芁な堎合の継続的な運甚の確保。 この時点で、私は別に䜏みたす。 倚くの堎合、アプリケヌションを曎新する必芁がありたすが、すべおの䌁業がこれを迅速か぀目に芋えないように行う胜力を持っおいるわけではありたせん。 この問題は、クラスタリングず、いわゆるれロダりンタむム曎新スキヌムを䜿甚するこずで解決されたす。

これらの問題は、クラスタリングずスケヌラブルなアヌキテクチャによっお察凊されたす。

Jira DataCenterのコンポヌネントは䜕ですか


次の図に瀺すように、Jira DataCenterクラスタヌはいく぀かの専甚マシンのコレクションです。

画像
図1. Jira Data Centerのアヌキテクチャ

  1. アプリケヌションノヌドアプリケヌションノヌドたたはクラスタヌノヌド。 すべおのワヌクロヌドずリク゚ストを受け入れお凊理したす。 ノヌドの圹割は、同䞀のコンテンツずむンストヌルされたアプリケヌション、およびマりントされた共有ファむルシステムを備えた通垞のサヌバヌによっお果たされたす。
  2. ファむルのむンポヌト/゚クスポヌト、プラグむン、キャッシュなどの暙準機胜を備えたファむルシステム共有ファむルシステム。 ファむルサヌバヌは、共有フォルダヌたたはリ゜ヌスが䜜成される別個のサヌバヌでもあり、ノヌドにマりントされお共有ファむルに䜿甚されたす。
  3. 共有デヌタベヌス この堎合、デヌタベヌスサヌバヌは別のサヌバヌであり、MS SQL、PostgreSQL、MySQL、Oracle䞊に構築できたす。
  4. ロヌドバランサヌ ナヌザヌリク゚ストを配信し、ノヌドに配信したす。そのうちの1぀が倱敗した堎合、バランサヌはリク゚ストをほが瞬時に他のノヌドにリダむレクトしたす。 その䜜業のおかげで、ナヌザヌは1぀のノヌドの障害に気付くこずすらありたせん。 バランサヌの動䜜に぀いおは、別途説明したす。

Jira Data Centerクラスタヌトポロゞ


JDCでクラスタヌを構築するための基本原則を瀺したす。


すべおのノヌドはアクティブずパッシブに分けられたす。 アクティブノヌドは、次の点で異なりたす。


以䞋の図は、Jiraクラスタの動䜜を瀺しおいたす

画像
図2.アヌキテクチャヌの簡略図

ロヌドバランサヌに぀いお


バランサヌは、リバヌスプロキシがむンストヌルされおいる任意のサヌバヌたたは物理デバむスです。 バランサヌの最も有名な䟋を挙げたす。

1.ハヌドりェアバランサヌ

•シスコ
•ゞュニパヌ
•F5

2.゜フトりェアバランサヌ

•mod_proxyApache-最も䞀般的なプロトコルずいく぀かの異なる負荷分散アルゎリズムをサポヌトするApache HTTPサヌバヌのプロキシサヌバヌ。

•Varnishは、リバヌスHTTPプロキシサヌバヌおよびアクセラレヌタであり、トラフィックの倚いサむト向けに蚭蚈されおいたす。 他ずは異なり、プロキシサヌバヌずHTTPトラフィックのロヌドバランサヌのみです。 特に、ワ​​ニスはりィキペディア、ニュヌペヌクタむムズ、ガヌディアン、その他倚くの倧芏暡プロゞェクトを䜿甚しおいたす。

•Nginx-トラフィックの倚いサむト向けのロヌドバランサヌおよびプロキシ゜リュヌションで人気のあるナンバヌ1 Webサヌバヌ。 それは積極的に開発されおおり、メヌカヌは無料の䌁業バヌゞョンを提䟛しおいたす。 WordPress.com、Zynga、Airbnb、Hulu、MaxCDNなど、䞖界で最も蚪問されたサむトの倚くで䜿甚されおいたす。

•Nginx Plus-実際には、䞊蚘の有料のNginxの法人向けバヌゞョンです。

•HAProxyは、TCP / HTTPプロトコルの負荷分散ずプロキシ機胜を提䟛する無料のオヌプン゜ヌスツヌルです。 高速で、システムリ゜ヌスをほずんど消費せず、Linux、Solaris、FreeBSD、およびWindowsず互換性がありたす。

ここでこのリンクでプロキシサヌバヌの良い比范を芋぀けるこずができたす。

フォワヌドおよびリバヌスプロキシ


ロヌドバランサヌは、盎接プロキシずしおもリバヌスプロキシずしおも機胜したす。 この違いは、stackoverflowに関するこのコメントの著者によっお十分に説明されおいたす。

1.「転送プロキシ」転送プロキシ。 この堎合のプロキシむベントは、「盎接プロキシ」が元の芁求者に代わっお別のWebサむトからデヌタを取埗するこずです。 䟋ずしお、むンタヌネットに接続されおいる3台のコンピュヌタヌのリストを瀺したす。

X =むンタヌネット䞊のコンピュヌタヌたたはクラむアントコンピュヌタヌ
Y =プロキシWebサむト、proxy.example.org
Z =アクセスしたいりェブサむトはwww.example.netです
通垞、X-> Zから盎接接続できたす。ただし、䞀郚のシナリオでは、Xに代わっおY-> Zを䜿甚した方がよい堎合がありたす。これは、X-> Y-> Zです。

2.「逆プロキシ」逆プロキシ。 同じ状況を想像しおください。サむトYでのみリバヌスプロキシが構成されおいたす。 通垞、X-> Zから盎接接続できたすが、シナリオによっおは、Zの管理者が盎接アクセスを制限たたは犁止し、最初に蚪問者にYを通過させる方が良い堎合がありたす。 X-> Y->Z。
このケヌスは、ナヌザヌXがデヌタをYず亀換しおいるこずをナヌザヌXが認識しおいるため、ナヌザヌXがZにアクセスしおいるこずを知らないずいう点で「盎接プロキシ」ず異なりたす。サヌバヌZはクラむアントには芋えず、倖郚プロキシサヌバヌYのみが倖郚に芋える。 リバヌスプロキシは、クラむアント偎の構成を必芁ずしたせん。 クラむアントXは、YX-> Yずのみ察話しおいるず考えおいたすが、実際には、Yは接続党䜓をリダむレクトしたすX-> Y-> Z。

次に、゜フトりェアバランサヌの䜿甚を怜蚎したす。

どの゜フトりェアバランサヌを遞択したすか


私たちの経隓では、スティッキセッションモヌドをサポヌトし、たた最もよく䜿甚されるWebサヌバヌの1぀であるため、゜フトりェアバランサヌの最適な遞択肢はNginxです。

スティッキヌセッションは、クラむアント芁求が同じグルヌプサヌバヌに送信される負荷分散方法です。 Nginxには、Cookieを䜿甚しおバランスを取るスティッキヌメ゜ッドがありたすが、商甚バヌゞョンのみです。 しかし、倖郚モゞュヌルの䜿甚ずいう無料の方法がありたす。

このモゞュヌルはCookieを䜜成するため、各ブラりザヌが䞀意になりたす。 次に、Cookieを䜿甚しおリク゚ストを同じサヌバヌにリダむレクトしたす。 Cookieが存圚しない堎合最初の芁求など、サヌバヌはランダムに遞択されたす。
このリンクずこのHabrapostでスティッキヌメ゜ッドの詳现を読むこずができたす。

そしお今、実甚的な郚分に移りたしょう...

Jira DataCenterクラスタヌを䜜成する手順


クラスタリングの堎合、Jiraがむンストヌルされた既存のむンスタンスたたは新しいむンスタンスを䜿甚できたす。 この䟋では、異なるOSぞの新しいむンスタンスのむンストヌルに぀いお説明したすシステムの汎甚性を瀺すため。

1.デヌタベヌスサヌバヌから始めたしょう。 既存のものず新しいものの䞡方を䜿甚できたす。 繰り返したすが、説明のために、Windows Server 2016 + PostgreSQL 9.4が遞択されたした。 OSをむンストヌルし、PGサヌバヌをむンストヌルし、PG Adminをむンストヌルし、ナヌザヌずデヌタベヌスを远加したす。

2. Ubuntu 16.04 LTS OSで最初のノヌドを䜜成したす。 必芁なパッケヌゞ、リポゞトリの曎新をむンストヌルしたす。

3. Jira DataCenterをダりンロヌドしおむンストヌルし、デヌタベヌスを起動しお構成したす念のため、Atlassianに詳现なガむドがありたす 。

4. Jiraをオフにし、ノヌドをオフにしたす。
サヌビスゞラストップ

5.さらに操䜜するには、Jira自動実行を䞀時的に無効にするこずをお勧めしたす。
update-rc.d -f jira remove

6.スむッチをオフにしたノヌドのクロヌンを䜜成したす。

7.最初のノヌドを起動し、Jiraをオフにしたすデフォルトでは、むンストヌル埌のJiraは自動実行に蚭定されたす。

8. 2番目のノヌドを実行し、Jiraをオフにしたす。

9.バランサヌ甚に個別のむンスタンスを䜜成したす。 Ubuntu 16.04を遞んだのは、 それは非垞に高速で単玔であり、ラむセンスの圢で远加費甚を必芁ずしたせん。

10. nginxをむンストヌルしたすこの䟋では、バヌゞョン1.13.4が䜿甚されおいたす。

11. nginx-sticky-module-ngをダりンロヌドしお解凍したす。
git clone bitbucket.org/nginx-goodies/nginx-sticky-module-ng.git

12.モゞュヌルを再コンパむルおよび远加するために、nginxを準備したす。

13. nginx-sticky-module-ngモゞュヌルでnginxをコンパむルしたす。 私の堎合、コンパむル行は次のようになりたした。
./configure --prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --modules-path = / usr / lib / nginx / modules --conf-path = / etc / nginx / nginx。 conf --error-log-path = / var / log / nginx / error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx pid --lock-path = / var / run / nginx.lock --http-client-body-temp-path = / var / cache / nginx / client_temp --http-proxy-temp-path = / var / cache / nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module- -with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_sl_module_with_module -with-http_sub_module --with-ht tp_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt = '-g -O2 -fstack-protector- param = ssp-buffer-size = 4 -Wformat -Werror = format-security -Wp、-D_FORTIFY_SOURCE = 2 -fPIC '--with-ld-opt ='-Wl、-Bsymbolic-functions -Wl、-z、relro -Wl、-z、now -Wl、-as-needed -pie '--add-module = / usr / local / src / nginx-sticky-module-ng

14. /etc/nginx/nginx.confファむルを芋぀けお、.bakにコピヌし、nginxをリバヌスプロキシモヌドに蚭定したす。

15.次に、ファむルサヌバヌできればフォヌルトトレラントも必芁です。 たずえば、 NFSボヌルを䜜成したWindowsサヌバヌを遞択したした 。

16.各ノヌドで、NFSサポヌト甚のパッケヌゞをむンストヌルしたす。
apt-get install nfs-common

17. / media / jiraフォルダヌを䜜成しお実行したす。
chmod -R 0777 / media / Jira

18. NFSボヌルを共有ボヌルずしおマりントしたすルヌトフォルダヌではなく、/ media / jiraなどにマりントするこずが必須です-すべおのノヌド

19.1。 さらに、手動マりント単䞀を実行するこずもできたす。
sudo mount -t nfs -O uid = 1000、iocharset = utf-8 xx.xx.xx.xx/ jira / media / jira
ここで、xx.xx.xx.xxは、NFSボヌルを持぀サヌバヌのIPアドレスです。

19.2。 たたは、すぐに自動マりントOS起動時
mcedit / etc / fstab
最埌に次の行を远加する必芁がありたす。
192.168.7.239:/jira / media / jira nfs user、rw 0 0
次に、保存しお終了したす。

20. IDを割り圓おたす最初のnode1ノヌド、2番目のnode2ノヌドなど。
このIDはクラスタヌ党䜓で䞀意である必芁がありたす
jira.node.id = node1
すべおのJiraノヌドの共有ホヌムディレクトリの堎所
jira.shared.home = / media / jira

21.最初のノヌドでjiraを実行したす
サヌビスゞラスタヌト
チェック
システム->システム情報->クラスタヌONずノヌド番号を探したす。

22. nginxバランシングのセットアップ

23.以来 以前は、ノヌドでJira自動起動を無効にしおから、次のコマンドで有効にできたす。
update-rc.d -f jira enable

24.クラスタヌの動䜜を確認し、必芁に応じおノヌドを远加したす。

クラスタヌの開始順序


1.共有ファむルシステムサヌバヌを有効にする
2.ロヌドバランサヌを有効にする
3. node1を有効にしたす
4. node2を有効にしたす
5. ...

クラスタヌ停止順序


1. service Jira stopコマンドを䜿甚しお、䞡方のノヌドでJiraを停止したす
2.ノヌド2をオフにしたす
3.ノヌド1をオフにしたす
4.ロヌドバランサヌをオフにしたす
5.ファむルシステムサヌバヌの電源を切る

それだけです...


もちろん、説明した方法だけが真の方法ではありたせん。 これは実装の1぀の方法にすぎたせん。

同僚が資料の準備に協力しおくれたこずに感謝したす。
コメントしお、質問しおください、そしお、あなたの泚意をありがずう。

Source: https://habr.com/ru/post/J433904/


All Articles