回覆列表
  • 1 # 會寫程式碼的三農創業者

    Dubbo建議使用Zookeeper作為服務的註冊中心。

    Zookeeper叢集中只要有過半的節點是正常的情況下,那麼整個叢集對外就是可用的。正是基於這個特性,要將ZK叢集的節點數量要為奇數(2n+1:如3、5、7個節點)較為合適。

    ZooKeeper與Dubbo服務叢集架構圖

    伺服器1:192.168.1.81 埠:2181、2881、3881

    伺服器2:192.168.1.82 埠:2182、2882、3882

    伺服器3:192.168.1.83 埠:2183、2883、3883

    1、 修改作業系統的/etc/hosts檔案,新增IP與主機名對映:

    # zookeeper clusterservers

    192.168.1.81 edu-zk-01

    192.168.1.82 edu-zk-02

    192.168.1.83 edu-zk-03

    2、 下載或上傳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

    3、 解壓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

    4、 在各zookeeper節點目錄下建立以下目錄:

    $ cd /home/wusc/zookeeper/node-0X (X代表節點號1、2、3,以下同解)

    $ mkdir data

    $ mkdir logs

    5、 將zookeeper/node-0X/conf目錄下的zoo_sample.cfg檔案複製一份,命名為zoo.cfg:

    $ cp zoo_sample.cfg zoo.cfg

    6、 修改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 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。

    7、 在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

    8、 在防火牆中開啟要用到的埠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

    9、 啟動並測試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

    10、停止zookeeper程序:

    $ zkServer.sh stop

    11、配置zookeeper開機使用wusc使用者啟動:

    編輯node-01、node-02、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"

    二、安裝Dubbo管控臺(基礎篇有講,此處重點講管控臺如何連結叢集):

    Dubbo管控臺可以對註冊到zookeeper註冊中心的服務或服務消費者進行管理,但管控臺是否正常對Dubbo服務沒有影響,管控臺也不需要高可用,因此可以單節點部署。

    IP: 192.168.1.81

    部署容器:Tomcat7

    埠:8080

    1、 下載(或上傳)最新版的Tomcat7(apache-tomcat-7.0.57.tar.gz)到/home/wusc/

    2、 解壓:

    $ tar -zxvf apache-tomcat-7.0.57.tar.gz

    $ mv apache-tomcat-7.0.57dubbo-admin-tomcat

    3、 移除/home/wusc/dubbo-admin-tomcat/webapps目錄下的所有檔案:

    $ rm -rf *

    4、 上傳Dubbo管理控制檯程式dubbo-admin-2.5.3.war

    到/home/wusc/dubbo-admin-tomcat/webapps

    5、 解壓並把目錄命名為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

    6、 配置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

    (以上密碼在正式上生產前要修改)

    7、 防火牆開啟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

    8、 啟動Tomat7

    $ /home/wusc/dubbo-admin-tomcat/bin/startup.sh

    9、 瀏覽http://192.168.1.81:8080/

    10、配置部署了Dubbo管控臺的Tomcat開機啟動:

    在虛擬主機中編輯/etc/rc.local檔案,加入:

    su - wusc -c"/home/wusc/dubbo-admin-tomcat/bin/startup.sh"

  • 2 # 會寫程式碼的三農創業者

    Dubbo建議使用Zookeeper作為服務的註冊中心。

    Zookeeper叢集中只要有過半的節點是正常的情況下,那麼整個叢集對外就是可用的。正是基於這個特性,要將ZK叢集的節點數量要為奇數(2n+1:如3、5、7個節點)較為合適。

    ZooKeeper與Dubbo服務叢集架構圖

    伺服器1:192.168.1.81 埠:2181、2881、3881

    伺服器2:192.168.1.82 埠:2182、2882、3882

    伺服器3:192.168.1.83 埠:2183、2883、3883

    1、 修改作業系統的/etc/hosts檔案,新增IP與主機名對映:

    # zookeeper clusterservers

    192.168.1.81 edu-zk-01

    192.168.1.82 edu-zk-02

    192.168.1.83 edu-zk-03

    2、 下載或上傳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

    3、 解壓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

    4、 在各zookeeper節點目錄下建立以下目錄:

    $ cd /home/wusc/zookeeper/node-0X (X代表節點號1、2、3,以下同解)

    $ mkdir data

    $ mkdir logs

    5、 將zookeeper/node-0X/conf目錄下的zoo_sample.cfg檔案複製一份,命名為zoo.cfg:

    $ cp zoo_sample.cfg zoo.cfg

    6、 修改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 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。

    7、 在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

    8、 在防火牆中開啟要用到的埠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

    9、 啟動並測試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

    10、停止zookeeper程序:

    $ zkServer.sh stop

    11、配置zookeeper開機使用wusc使用者啟動:

    編輯node-01、node-02、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"

    二、安裝Dubbo管控臺(基礎篇有講,此處重點講管控臺如何連結叢集):

    Dubbo管控臺可以對註冊到zookeeper註冊中心的服務或服務消費者進行管理,但管控臺是否正常對Dubbo服務沒有影響,管控臺也不需要高可用,因此可以單節點部署。

    IP: 192.168.1.81

    部署容器:Tomcat7

    埠:8080

    1、 下載(或上傳)最新版的Tomcat7(apache-tomcat-7.0.57.tar.gz)到/home/wusc/

    2、 解壓:

    $ tar -zxvf apache-tomcat-7.0.57.tar.gz

    $ mv apache-tomcat-7.0.57dubbo-admin-tomcat

    3、 移除/home/wusc/dubbo-admin-tomcat/webapps目錄下的所有檔案:

    $ rm -rf *

    4、 上傳Dubbo管理控制檯程式dubbo-admin-2.5.3.war

    到/home/wusc/dubbo-admin-tomcat/webapps

    5、 解壓並把目錄命名為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

    6、 配置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

    (以上密碼在正式上生產前要修改)

    7、 防火牆開啟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

    8、 啟動Tomat7

    $ /home/wusc/dubbo-admin-tomcat/bin/startup.sh

    9、 瀏覽http://192.168.1.81:8080/

    10、配置部署了Dubbo管控臺的Tomcat開機啟動:

    在虛擬主機中編輯/etc/rc.local檔案,加入:

    su - wusc -c"/home/wusc/dubbo-admin-tomcat/bin/startup.sh"

  • 中秋節和大豐收的關聯?
  • “禁食野味”是保護動物還是破壞自然法則?