天天看點

[kubernetes] 傳遞dubbo之zookeeper安裝配置

    做這個實驗目标是往kubernetes叢集裡傳遞dubbo服務,現在來安裝zookeeper叢集,拓撲如下圖所示:

[kubernetes] 傳遞dubbo之zookeeper安裝配置

​​01 配置java環境​​

    由于zookeeper是java語言開發的,是以安裝之前需要先準備java環境,這部分三台主機都需要配置。

1)下載下傳jdk

jdk-8u291-linux-x64.tar.gz      

2)建立目錄

mkdir /usr/java      

3)解壓縮

tar xfv jdk-8u291-linux-x64.tar.gz -C /usr/java      

4)配置軟連接配接,友善以後作更新

ln -s /usr/java/jdk1.8.0_291/ /usr/java/jdk      

5)配置環境變量

vi /etc/profile
export JAVA_HOME=/usr/java/jdk 
export PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar      

6)測試

source /etc/profile
[root@host11 ~]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)      
[kubernetes] 傳遞dubbo之zookeeper安裝配置

​​02 配置zookeeper​​

 1)下載下傳軟體

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz      

2)解壓

tar xfv zookeeper-3.4.14.tar.gz -C /opt/      

3)作軟連接配接,友善以後更新

ln -s /opt/zookeeper-3.4.14 /opt/zookeeper      

4)配置zoo.cfg

[root@host11 ~]# cat /opt/zookeeper/conf/zoo.cfg 
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=zk1.od.com:2888:3888
server.2=zk2.od.com:2888:3888
server.3=zk3.od.com:2888:3888      
  • ​tickTime​:配置單元時間。單元時間是ZooKeeper的時間計算單元,其他的時間間隔都是使用tickTime的倍數來表示的。
  • ​initLimit​:節點的初始化時間。該參數用于Follower(從節點)的啟動,并完成與Leader(主節點)進行資料同步的時間。Follower節點在啟動過程中,會與Leader節點建立連接配接并完成對資料的同步,進而确定自己的起始狀态。Leader節點允許Follower節點在initLimit時間内完成這項工作。該參數預設值為10,表示是參數tickTime值的10倍。
  • ​syncLimit​:心跳最大延遲周期。該參數用于配置Leader節點和Follower節點之間進行心跳檢測的最大延時時間。在ZK叢集運作的過程中,Leader節點會通過心跳檢測來确定Follower節點是否存活。如果Leader節點在syncLimit時間内無法擷取到Follower節點的心跳檢測響應,那麼Leader節點就會認為該Follower節點已經脫離了和自己的同步。該參數預設值為5,表示是參數tickTime值的5倍。
  • ​dataDir​:是zookeeper持久化資料存放的目錄。myid檔案處于此目錄下。
  • ​dataLogDir​:日志目錄選項,如果沒有設定該參數,預設将使用和dataDir相同的設定。
  • ​clientPort​:zookeeper監聽用戶端連接配接的端口,預設是2181。
  • ​server.x​:叢集成員,這裡使用域名,是以需要配置dns

5)建立日志和資料目錄

mkdir -pv /data/zookeeper/{data,logs}      

6)配置myid ,​注意這裡每個主機的配置都不一樣​

[root@host11 ~]# echo 1 > /data/zookeeper/data/myid
[root@host12 ~]# echo 2 > /data/zookeeper/data/myid
[root@host21 ~]# echo 3 > /data/zookeeper/data/myid      

7)在dns伺服器配置dns解析

[root@host11 zk]# cat /var/named/od.com.zone 
$ORIGIN od.com.
$TTL 600  ; 10 minutes
@  IN SOA  dns.od.com. dnsadmin.od.com. (
          2021073105  ; serial
          10800  ; refresh
          900  ; retry
          604800  ; expire
          86400 )  ; minimum
  NS  dns.od.com.
$TTL  60 ; 1 minute
dns  A    192.168.122.11
harbor  A    192.168.122.200
k8s-yaml A    192.168.122.200
traefik  A    192.168.122.10
dashboard A    192.168.122.10
jenkins   A    192.168.122.10
zk1  A  192.168.122.10
zk2  A  192.168.122.11
zk3  A  192.168.122.21      

8)啟動主機上的zookeeper

/opt/zookeeper/bin/zkServer.sh start      
[kubernetes] 傳遞dubbo之zookeeper安裝配置

9)檢視zookeeper狀态(一主兩從)

/opt/zookeeper/bin/zkServer.sh status  # follower代表從節點,leader代表主節點      
[kubernetes] 傳遞dubbo之zookeeper安裝配置
[kubernetes] 傳遞dubbo之zookeeper安裝配置
[kubernetes] 傳遞dubbo之zookeeper安裝配置

10)連結到zookeeper,檢視目錄,傳回zookeeper即為成功

/opt/zookeeper/bin/zkCli.sh -server localhost:2181
[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]      

tips:如果檢視zkServer.sh 傳回

Error contacting service. It is probably not running

,則檢查/data/zookeeper/data/zookeeper.out檢視詳細的報錯内容,如果需要再次啟動zookeeper,先删除/data/zookeeper/data/zookeeper_server.pid。

​​03 使用supervisor管理zk​​

    supervisor可以類似于systemctl一樣幫我們管理zk服務,并且在zk異常退出時幫我們拉起zk程序。

1)安裝supervisor

yum install -y supervisor
systemctl enable supervisord
systemctl start supervisord      

2)配置supervisor腳本 -- 以host21為例

[root@host21 supervisord.d]# cat /etc/supervisord.d/zk-server.ini 
[program:zk-server-host21]
command=/opt/zookeeper/bin/zkServer.sh start-foreground
;priority=999
autostart=true
autorestart=true
;startsecs=10
;startretries=3
;exitcodes=0,2
;stopsignal=QUIT
;stopwaitsecs=10
user=root
log_stdout=true
log_stderr=true
stdout_logfile=/data/zookeeper/logs/supervisord_zookeeper.log
redirect_stderr=true
;logfile_maxbytes=10MB
environment=JAVA_HOME=/usr/java/jdk      

3)停止zk

/opt/zookeeper/bin/zkServer.sh stop      

4)使用supervisord更新zk服務

supervisord update      

5)檢視zk服務狀态

supervisord status zk-server-host21      
supervisord stop zk-server-host21      
supervisord start zk-server-host21