Zk是一個分佈式服務框架,提供了協調分佈式應用的基本服務,zk集羣主要是保證服務的可靠性和穩定性,介紹一下集羣的安裝與配置,在安裝以前須要安裝好jdk,jdk的安裝請網上查找相應的方法html
Dubbo註冊中心集羣Zookeeper-3.4.6node
Dubbo建議使用Zookeeper做爲服務的註冊中心。web
Zookeeper集羣中只要有過半的節點是正常的狀況下,那麼整個集羣對外就是可用的。正是基於這個特性,要將ZK集羣的節點數量要爲奇數(2n+1:如三、五、7個節點)較爲合適。apache
ZooKeeper與Dubbo服務集羣架構圖tomcat
服務器1:192.168.1.81 端口:218一、288一、3881服務器
服務器2:192.168.1.82 端口:218二、288二、3882架構
服務器3:192.168.1.83 端口:218三、288三、3883app
一、 修改操做系統的/etc/hosts文件,添加IP與主機名映射:框架
# zookeeper clusterserversless
192.168.1.81 edu-zk-01
192.168.1.82 edu-zk-02
192.168.1.83 edu-zk-03
二、 下載或上傳zookeeper-3.4.6.tar.gz到/home/wusc/zookeeper目錄:
$ cd /home/wusc/zookeeper
$ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
三、 解壓zookeeper安裝包,並按節點號對zookeeper目錄重命名:
$ tar -zxvf zookeeper-3.4.6.tar.gz
服務器1:
$ mv zookeeper-3.4.6 node-01
服務器2:
$ mv zookeeper-3.4.6 node-02
服務器3:
$ mv zookeeper-3.4.6 node-03
四、 在各zookeeper節點目錄下建立如下目錄:
$ cd /home/wusc/zookeeper/node-0X (X表明節點號一、二、3,如下同解)
$ mkdir data
$ mkdir logs
五、 將zookeeper/node-0X/conf目錄下的zoo_sample.cfg文件拷貝一份,命名爲zoo.cfg:
$ cp zoo_sample.cfg zoo.cfg
六、 修改zoo.cfg配置文件:
zookeeper/node-01的配置(/home/wusc/zookeeper/node-01/conf/zoo.cfg)以下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wusc/zookeeper/node-01/data
dataLogDir=/home/wusc/zookeeper/node-01/logs
clientPort=2181
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-02的配置(/home/wusc/zookeeper/node-02/conf/zoo.cfg)以下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wusc/zookeeper/node-02/data
dataLogDir=/home/wusc/zookeeper/node-02/logs
clientPort=2182
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-03的配置(/home/wusc/zookeeper/node-03/conf/zoo.cfg)以下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wusc/zookeeper/node-03/data
dataLogDir=/home/wusc/zookeeper/node-03/logs
clientPort=2183
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
參數說明:
tickTime=2000
tickTime這個時間是做爲Zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個tickTime時間就會發送一個心跳。
initLimit=10
initLimit這個配置項是用來配置Zookeeper接受客戶端(這裏所說的客戶端不是用戶鏈接Zookeeper服務器的客戶端,而是Zookeeper服務器集羣中鏈接到Leader的Follower 服務器)初始化鏈接時最長能忍受多少個心跳時間間隔數。當已經超過10個心跳的時間(也就是tickTime)長度後 Zookeeper 服務器尚未收到客戶端的返回信息,那麼代表這個客戶端鏈接失敗。總的時間長度就是 10*2000=20 秒。
syncLimit=5
syncLimit這個配置項標識Leader與Follower之間發送消息,請求和應答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是5*2000=10秒。
dataDir=/home/wusc/zookeeper/node-01/data
dataDir顧名思義就是Zookeeper保存數據的目錄,默認狀況下Zookeeper將寫數據的日誌文件也保存在這個目錄裏。
clientPort=2181
clientPort這個端口就是客戶端(應用程序)鏈接Zookeeper服務器的端口,Zookeeper會監聽這個端口接受客戶端的訪問請求。
server.A=B:C:D
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
A是一個數字,表示這個是第幾號服務器;
B是這個服務器的IP地址(或者是與IP地址作了映射的主機名);
C第一個端口用來集羣成員的信息交換,表示這個服務器與集羣中的Leader服務器交換信息的端口;
D是在leader掛掉時專門用來進行選舉leader所用的端口。
注意:若是是僞集羣的配置方式,不一樣的 Zookeeper 實例通訊端口號不能同樣,因此要給它們分配不一樣的端口號。
七、 在dataDir=/home/wusc/zookeeper/node-0X/data下建立myid文件
編輯myid文件,並在對應的IP的機器上輸入對應的編號。如在node-01上,myid文件內容就是1,node-02上就是2,node-03上就是3:
$ vi /home/wusc/zookeeper/node-01/data/myid ## 值爲1
$ vi /home/wusc/zookeeper/node-02/data/myid ## 值爲2
$ vi /home/wusc/zookeeper/node-03/data/myid ## 值爲3
八、 在防火牆中打開要用到的端口218X、288X、388X
切換到root用戶權限,執行如下命令:
# chkconfigiptables on
# service iptablesstart
編輯/etc/sysconfig/iptables
# vi/etc/sysconfig/iptables
如服務器01增長如下3行:
## zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp--dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 2881 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3881 -j ACCEPT
重啓防火牆:
# service iptables restart
查看防火牆端口狀態:
# service iptables status
九、 啓動並測試zookeeper(要用wusc用戶啓動,不要用root):
(1) 使用wusc用戶到/home/wusc/zookeeper/node-0X/bin目錄中執行:
$ /home/wusc/zookeeper/node-01/bin/zkServer.shstart
$ /home/wusc/zookeeper/node-02/bin/zkServer.shstart
$ /home/wusc/zookeeper/node-03/bin/zkServer.shstart
(2) 輸入jps命令查看進程:
$ jps
1456QuorumPeerMain
其中,QuorumPeerMain是zookeeper進程,說明啓動正常
(3) 查看狀態:
$ /home/wusc/zookeeper/node-01/bin/zkServer.sh status
(4) 查看zookeeper服務輸出信息:
因爲服務信息輸出文件在/home/wusc/zookeeper/node-0X/bin/zookeeper.out
$ tail-500f zookeeper.out
十、中止zookeeper進程:
$ zkServer.sh stop
十一、配置zookeeper開機使用wusc用戶啓動:
編輯node-0一、node-0二、node-03中的/etc/rc.local文件,分別加入:
su - wusc -c '/home/wusc/zookeeper/node-01/bin/zkServer.shstart'
su - wusc -c '/home/wusc/zookeeper/node-02/bin/zkServer.shstart'
su - wusc -c '/home/wusc/zookeeper/node-03/bin/zkServer.shstart'
2、安裝Dubbo管控臺(基礎篇有講,此處重點講管控臺如何連接集羣):
Dubbo管控臺能夠對註冊到zookeeper註冊中心的服務或服務消費者進行管理,但管控臺是否正常對Dubbo服務沒有影響,管控臺也不須要高可用,所以能夠單節點部署。
IP: 192.168.1.81
部署容器:Tomcat7
端口:8080
一、 下載(或上傳)最新版的Tomcat7(apache-tomcat-7.0.57.tar.gz)到/home/wusc/
二、 解壓:
$ tar -zxvf apache-tomcat-7.0.57.tar.gz
$ mv apache-tomcat-7.0.57dubbo-admin-tomcat
三、 移除/home/wusc/dubbo-admin-tomcat/webapps目錄下的全部文件:
$ rm -rf *
四、 上傳Dubbo管理控制檯程序dubbo-admin-2.5.3.war
到/home/wusc/dubbo-admin-tomcat/webapps
五、 解壓並把目錄命名爲ROOT:
$ unzip dubbo-admin-2.5.3.war -d ROOT
把dubbo-admin-2.5.3.war移到/home/wusc/tools目錄備份
$ mv dubbo-admin-2.5.3.war/home/wusc/tools
六、 配置dubbo.properties:
$ vi ROOT/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://192.168.1.81:2181?backup=192.168.1.82:2182,192.168.1.83:2183
dubbo.admin.root.password=wusc.123
dubbo.admin.guest.password=wusc.123
(以上密碼在正式上生產前要修改)
七、 防火牆開啓8080端口,用root用戶修改/etc/sysconfig/iptables,
# vi /etc/sysconfig/iptables
增長:
## dubbo-admin-tomcat:8080
-A INPUT -m state --state NEW -m tcp -p tcp--dport 8080 -j ACCEPT
重啓防火牆:
# service iptables restart
八、 啓動Tomat7
$ /home/wusc/dubbo-admin-tomcat/bin/startup.sh
九、 瀏覽http://192.168.1.81:8080/
十、配置部署了Dubbo管控臺的Tomcat開機啓動:
在虛擬主機中編輯/etc/rc.local文件,加入:
su - wusc -c'/home/wusc/dubbo-admin-tomcat/bin/startup.sh'
十一、應用連接到註冊中心羣集的測試。(請看視頻)
十二、註冊中心高可用集羣的測試。(請看視頻)
提示:下一節,註冊中心集羣的連接測試,多註冊中心集羣的升級遷移。
http://www.cnblogs.com/dennisit/p/4340746.html
http://11142517.blog.51cto.com/11132517/1736752