起因:安全漏洞掃描 zookeeper 沒有設置任何安全驗證
環境:System:Centos7 Java:1.8 Zookeeper:3.6
Server.1 |
192.168.45.243 |
Server.2 |
192.168.44.24 |
Server.3 |
192.168.44.117 |
一、zk集群部署
1.1 部署jdk
把jdk包分別上傳至三台節點/opt/app目錄下解壓
tar -xf jdk1.8.0_77.tar.gz
設置環境變量,在.bash_profile文件里添加如下設置
vim ~/.bash_profile export JAVA_HOME=/opt/app/jdk1.8.0_77 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar source ~/.bash_profile
驗證java環境
java -version
1.2 部署zk集群
下載zk包至/opt/app目錄(三台節點執行相同的操作) cd /opt/app 下載zk wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz # 解壓 tar -xf apache-zookeeper-3.6.0-bin.tar.gz # 修改名字 mv apache-zookeeper-3.6.0-bin zookeeper # 創建data目錄 cd /opt/app/zookeeper mkdir data # 在data目錄下創建myid文件 touch myid
在server.1節點myid文件輸入1
在server.2節點myid文件輸入2
在server.3節點myid文件輸入3
# 修改配置文件
cd /opt/app/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
1.3 關閉防火牆
此項是為了防止查看zk集群狀態時出現“Error contacting service. It is probably not running.”錯誤,不關閉防火牆前提需要配置防火牆規則。
查看firewalld運行狀態
systemctl status firewalld.service
關閉firewalld
systemctl stop firewalld.service
永久關閉
systemctl disable firewalld.service
1.4 啟動zk
分別啟動三台節點
cd /opt/app/zookeeper/bin
./ zkServer.sh start
查看集群狀態
./zkServer.sh status
server.1
server.2
server.3
此時server.3為領導者
1.5 停止zk
cd /opt/app/zookeeper/bin
./zkServer.sh stop
1.6 重啟后查看集群選舉是否正常
server.1
server.2
server.3
此時server.2為領導者,集群選舉正常
1.7 zk客戶端使用
cd /opt/app/zookeeper/bin
./zkCli.sh -server 192.168.45.243:2181 //連本地節點
./zkCli.sh -server 192.168.45.243 //不帶端口就采用默認2181端口
./zkCli.sh //不帶參數回車默認連接本地IP和2181端口
./zkCli.sh -server 192.168.44.24 //也可以連接節點2的zk
二、Zookeeper給dubbo節點加auth認證
2.1 登陸Zookeeper客戶端
執行命令: ./zkCli.sh -server localhost:2181
2.2 查看Zookeeper下節點
執行命令:ls /
注:如沒有dubbo節點,則可執行create /dubbo來創建dubbo節點
執行命令:create /dubbo
2.3 添加用戶名、密碼
執行命令: addauth digest admin:P@ssw0rd
2.4 授予/dubbo auth權限
執行命令: setAcl /dubbo auth:admin:P@ssw0rd:rwadc
2.5 修改dubbo-config.xml配置文件
vim dubbo-config.xml
原
<dubbo:registry protocol="zookeeper" address="${zookeeper.ip}" client="curator"/>
修改為:
<dubbo:registry protocol="zookeeper" address="${zookeeper.ip}" username="admin" password="P@ssw0rd" client="curator"/>