CentOS 6.6でluci-ricciを使用してRHCSクラスタをインストール
12579 ワード
1.RHCSクラスタを構成する前提:
時間同期 名前解析、ここでは修正/etc/hostsファイル を使用yumソースを構成し、CentOS 6のデフォルトの行 ファイアウォールを閉じる(またはクラスタを開くために必要な通信ポート)、およびselinux、 NetworkManagerサービスをクローズ 2.RHCSに必要な主なパッケージはcmanとrgmanager
cman:クラスタベース情報層であり、CentOS 6ではcorosyncに依存する
rgmanager:pacemakerのようなクラスタエクスプローラの機能です
luci:rhcsクラスタを管理するwebインタフェースを提供し、luci管理クラスタは主にricciと通信することによって完成する.
ricci:クラスタにインストールされたノードのluci管理要求を受信するエージェント.
luciとricciの関係はambari-serverとambari-agentのようだ.
3.環境説明:
ホスト名はここに付けましたが、他にも時間同期、構成/etc/hosts/などは実行されていませんので、便宜上プレイブックを書いて初期化してみました
このプレイブックを実行して初期化します
4.cent 1にluciをインストールします.luciはpythonプログラムで、多くのpythonパッケージに依存しています.
luciの起動
今はフロントでluciにログインできます.httpsですね
アカウントのパスワードはこのホストのアカウントとパスワードです
ログインに成功しました.今rhcsのクラスタを構成します.これはクラスタを管理するためのものです.本当のクラスタはまだインストールされていません.
5.cnet 2,cent 3,cent 4にricciをインストールし、ricciも多くのソフトウェアに依存している.ここではansibleを使用して3つのノードに直接装着している.もちろん、cent 1から他のノードへの鍵なしログインはすでに用意されている.
ricciをインストールした後、nodeノードでricciユーザーにパスワードを設定します.ricciユーザーはricciプロセスを実行するユーザーです.このパスワードは後で使います.ここでは簡単です.このパスワードはccsコマンドで設定することもできます.
ricciの起動
ricciは11111ポートで傍受されており、このような操作はもちろんplaybookにも書くことができます.
6.クラスタの作成/追加/削除、node、resource、fence device、servicegroups、Failover Domainsなどのクラスタの全ライフサイクルを管理するなど、Webインタフェースでクラスタを構成できるようになりました.
ここでは、Webサービスに関する高可用性サービスについて説明します.
Manage Clusters->Createはクラスタを作成します
このインタフェースはまだ簡単でしょう.
Create Clusterの後、クラスタソフトウェアのインストールを試みます.
ricciのワークプロセスは、いずれかのnodeで表示されます.
cman:クラスタベース情報層であり、CentOS 6ではcorosyncに依存する
rgmanager:pacemakerのようなクラスタエクスプローラの機能です
luci:rhcsクラスタを管理するwebインタフェースを提供し、luci管理クラスタは主にricciと通信することによって完成する.
ricci:クラスタにインストールされたノードのluci管理要求を受信するエージェント.
luciとricciの関係はambari-serverとambari-agentのようだ.
3.環境説明:
luci :
ricci:
ricci:
ricci:
ホスト名はここに付けましたが、他にも時間同期、構成/etc/hosts/などは実行されていませんので、便宜上プレイブックを書いて初期化してみました
---
- hosts:hdpservers
remote_user: root
vars:
tasks:
- name: add synctime cron
cron: name='sync time' minute='*/5'job='/usr/sbin/ntpdate '
- name: shutdown iptables
service: name={{}}state={{}} enabled={{}}
with_items:
- { name: iptables, state: stopped,enabled: no}
- { name: NetworkManager, state: stopped,enabled: no}
tags: stop service
- name: copy selinux conf file
copy: src={{}} dest={{}}owner={{}} group={{}} mode={{}}
with_items:
- { src=\'#\'" /etc/selinux/config', dest:/etc/selinux/config, owner: root, group: root, mode: '0644'}
- { src=\'#\'" /etc/hosts', dest: /etc/hosts,owner: root, group: root, mode: '0644'}
- name: cmd off selinux
shell: setenforce 0
このプレイブックを実行して初期化します
[root@cent1 yaml]#ansible-playbook
4.cent 1にluciをインストールします.luciはpythonプログラムで、多くのpythonパッケージに依存しています.
[root@cent1 ~]#yum install luci
luciの起動
[root@cent3 ~]#/etc//luci start
Adding followingauto-detected host IDs (IP addresses/domain names), corresponding to `cent3'address, to the configuration of self-managed certificate`/var/lib/luci/etc/' (you can change them by editing`/var/lib/luci/etc/', removing the generated certificate`/var/lib/luci/certs/' and restarting luci):
(none suitable found, you can still doit manually as mentioned above)
Generating a 2048bit RSA private key
writing newprivate key to '/var/lib/luci/certs/'
saslauthd: [ ]
Start luci... [ ]
Point your webbrowser to :8084 (or equivalent) to access luci
今はフロントでluciにログインできます.httpsですね
アカウントのパスワードはこのホストのアカウントとパスワードです
ログインに成功しました.今rhcsのクラスタを構成します.これはクラスタを管理するためのものです.本当のクラスタはまだインストールされていません.
5.cnet 2,cent 3,cent 4にricciをインストールし、ricciも多くのソフトウェアに依存している.ここではansibleを使用して3つのノードに直接装着している.もちろん、cent 1から他のノードへの鍵なしログインはすでに用意されている.
[root@cent1 ~]#ansible rhcs -m yum -a "name=ricci"
ricciをインストールした後、nodeノードでricciユーザーにパスワードを設定します.ricciユーザーはricciプロセスを実行するユーザーです.このパスワードは後で使います.ここでは簡単です.このパスワードはccsコマンドで設定することもできます.
[root@cent1 ~]#ansible rhcs -m shell -a "echo '123456' | passwd --stdin ricci"
ricciの起動
[root@cent1 ~]#ansible rhcs -m service -a "name=ricci state=started enabled=yes"
[root@cent2 ~]# ss-tunlp |grep ricci
tcp LISTEN 0 5 :::11111 :::* users:(("ricci",3237,3))
ricciは11111ポートで傍受されており、このような操作はもちろんplaybookにも書くことができます.
6.クラスタの作成/追加/削除、node、resource、fence device、servicegroups、Failover Domainsなどのクラスタの全ライフサイクルを管理するなど、Webインタフェースでクラスタを構成できるようになりました.
ここでは、Webサービスに関する高可用性サービスについて説明します.
Manage Clusters->Createはクラスタを作成します
このインタフェースはまだ簡単でしょう.
Create Clusterの後、クラスタソフトウェアのインストールを試みます.
ricciのワークプロセスは、いずれかのnodeで表示されます.
[root@cent2 ~]# psaux |grep ricci
ricci 3453 213664 4400 ? S
/var/lib/ricci/queue/ luci ricci , XML
[root@cent2 ~]#file /var/lib/ricci/queue/1500004777
/var/lib/ricci/queue/1500004777:XML document text
7.インストールに しました
どちらかnodeを して ってみてください
この のサービスが していない は、 で きてみてもいいですが、 にはOKです.
8.リソースの
ここにはfenceデバイスはありません.これに せずに、2つの リソースを し、1つのサービスを して、サービスを します.
Resources-->Add:リソースの
IPを します.ここのmaskは のように きます.このように くことはできません.そうしないと、IPを できません.rgmanager Startingstopped service service:web1
rgmanager start onip "/" returned 1 (generic error)
rgmanager #68:Failed to start service:web1; return value: 1
scriptリソースを
9.サービスの
ここでのリソースは であり,このクラスタ に のサービスがあれば,これらのリソースを してもよいし,
Service Groupにプライベートリソースを します.
サービスを します.
Service Group-->Add:Serviceを します.
Add Resourceは、 ほど した2つのリソースを します.
クラスタ のどのノードでもコマンドで できます[root@cent3 ~]#clustat
Cluster Status forha1 @ Sun Jan 8 17:47:40 2017
Member Status:Quorate
Member Name ID Status
------ ---- ---- ------
1 Online, rgmanager
2 Online, Local, rgmanager
3 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:web1 started
cent 2ではipもhttpもサービスが まっています[root@cent2 ~]# ipa
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd00:00:00:00:00:00
inet /8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen1000
link/ether 00:0c:29:91:b3:11 brdff:ff:ff:ff:ff:ff
inet /24 brd global eth0
inet /24 scope global secondaryeth0
inet6 fe80::20c:29ff:fe91:b311/64 scopelink
valid_lft forever preferred_lft forever
[root@cent2 ~]#netstat -tunlp |grep 80
tcp 0 0 :::80 :::* LISTEN 34901/httpd
10.フェイルオーバのテスト:
rhcsにおけるサービスの については、/var/log/cluster/ログで できます.Jan 08 18:56:59rgmanager [ip] Checking /24, Level 10
Jan 08 18:56:59rgmanager [ip] /24 present on eth0
Jan 08 18:56:59rgmanager [ip] Link for eth0: Detected
Jan 08 18:56:59rgmanager [ip] Link detected on eth0
Jan 08 18:56:59rgmanager [ip] Local ping to succeeded
IPリソースの であるpingを してみることができますJan 08 18:55:49rgmanager [script] Executing /etc///httpd status
はscriptリソースの であり,スクリプトのみでstatusパラメータを する.
/etc//http/stopを したところ、ログに のようなものが されました.Jan 08 18:56:59rgmanager [script] Executing /etc///httpd status
Jan 08 18:56:59rgmanager [script] script:http1: status of /etc///httpd failed(returned 3)
#
Jan 08 18:56:59rgmanager status on script "http1" returned 1 (generic error)
Jan 08 18:56:59rgmanager Stopping service service:web1
Jan 08 18:56:59rgmanager [script] Executing /etc///httpd stop
Jan 08 18:56:59rgmanager [ip] Removing IPv4 address /24 from eth0
# web1
Jan 08 18:57:09rgmanager Service service:web1 is recovering
Jan 08 18:57:14rgmanager Service service:web1 is now running on member 2
# web1 member 2 ,member 2
のクラスタのステータスを するには、 の に います.[root@cent3 ~]# clustat
Cluster Status for ha1 @ Sun Jan 8 20:25:26 2017
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
1 Online, rgmanager
2 Online, Local, rgmanager
3 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:web1 started
このscriptのリソースがあなたのニーズに わない は、apacheリソースを してみてください.このscriptのリソースチェック が すぎると っても、スクリプトに を して を することができます.
11.ノードをシャットダウンして、Serviceの を しようとします.
cent 3をオフにした 、サービスはcent 4に した.[root@cent2 ~]#clustat
Cluster Status forha1 @ Sun Jan 8 20:35:42 2017
Member Status:Quorate
Member Name ID Status
------ ---- ---- ------
1 Online, Local, rgmanager
2 Offline
3 Online, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:web1 started
にcent 4をオフにすると、サービスはまたcent 2に します.[root@cent2 ~]#clustat
Cluster Status forha1 @ Sun Jan 8 20:36:27 2017
Member Status:Quorate
Member Name ID Status
------ ---- ---- ------
1 Online, Local, rgmanager
2 Offline
3 Online
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:web1 started
ここでOnlineが されているのは、シャットダウン であり、まだ にシャットダウンされていないためです.
、 のプロンプトが されます.[root@cent2 ~]#
Message fromsyslogd@cent2 at Jan 8 20:36:42 ...
rgmanager[5685]: #1: Quorum Dissolved
ログに のように されます.Jan 08 20:35:01rgmanager Member 2 shutting down
Jan 08 20:36:18rgmanager Member 3 shutting down
Jan 08 20:36:18rgmanager Starting stopped service service:web1
Jan 08 20:36:18rgmanager [ip] Link for eth0: Detected
Jan 08 20:36:19rgmanager [ip] Adding IPv4 address /24 to eth0
Jan 08 20:36:19rgmanager [ip] Pinging addr from dev eth0
Jan 08 20:36:21rgmanager [ip] Sending gratuitous ARP: 00:0c:29:91:b3:11 brdff:ff:ff:ff:ff:ff
Jan 08 20:36:22rgmanager [script] Executing /etc///httpd start
Jan 08 20:36:22rgmanager Service service:web1 started
Jan 08 20:36:42rgmanager #1: Quorum Dissolved
Message fromsyslogd@cent2 at Jan 8 20:36:42 ...
rgmanager[5685]: #1: Quorum Dissolved
Jan 08 20:36:42rgmanager [script] Executing /etc///httpd stop
Jan 08 20:36:42rgmanager [ip] Removing IPv4 address /24 from eth0
サービスが したのは、 が しているためです[root@cent2 ~]#clustat
Service statesunavailable: Operation requires quorum
Cluster Status forha1 @ Sun Jan 8 20:37:00 2017
Member Status:Inquorate
Member Name ID Status
------ ---- ---- ------
1 Online, Local
2 Offline
3 Offline