分布式协调服务Zookeeper集群搭建
分布式协调服务Zookeeper集群搭建
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.安装jdk环境
1>.操作环境
[root@node101.yinzhengjie.org.cn ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# uname -r 3.10.0-957.el7.x86_64 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# uname -m x86_64 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# cat /etc/hosts | grep yinzhengjie #注意,本片博客只有3台测试机,每台测试机器必须得配置jdk环境! 172.30.1.101 node101.yinzhengjie.org.cn 172.30.1.102 node102.yinzhengjie.org.cn 172.30.1.103 node103.yinzhengjie.org.cn [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# free -h total used free shared buff/cache available Mem: 3.7G 331M 2.9G 9.4M 570M 3.3G Swap: 2.0G 0B 2.0G [root@node101.yinzhengjie.org.cn ~]#
2>.打开Oracle官方网站下载相应的平台的安装包(https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
3>.卸载平台中已经存在的JDK版本
[root@node101.yinzhengjie.org.cn ~]# java -version openjdk version "1.8.0_201" OpenJDK Runtime Environment (build 1.8.0_201-b09) OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode) [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# rpm -qa *openjdk* java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64 java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el7_6.x86_64 java-11-openjdk-headless-11.0.ea.28-7.el7.x86_64 java-1.8.0-openjdk-devel-1.8.0.201.b09-2.el7_6.x86_64 java-11-openjdk-11.0.ea.28-7.el7.x86_64 java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64 #卸载JDK版本! [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64 [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.201.b09-2.el7_6.x86_64 [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-11-openjdk-headless-11.0.ea.28-7.el7.x86_64 [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-1.8.0-openjdk-devel-1.8.0.201.b09-2.el7_6.x86_64 [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-11-openjdk-11.0.ea.28-7.el7.x86_64 [root@node101.yinzhengjie.org.cn ~]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# rpm -qa *openjdk* [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# java -version -bash: /usr/bin/java: No such file or directory [root@node101.yinzhengjie.org.cn ~]#
4>.将下载的jdk版本进行解压安装并配置环境变量(如果你下载的是rpm包的oracle jdk的话就无需配置环境变量啦!)
[root@node101.yinzhengjie.org.cn ~]# mkdir /yinzhengjie/softwares -p [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# tar -zxf jdk-8u201-linux-x64.tar.gz -C /yinzhengjie/softwares/ [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/jdk1.8.0_201/ total 383856 drwxr-xr-x. 2 10 143 4096 Dec 16 03:45 bin -r--r--r--. 1 10 143 3244 Dec 16 03:45 COPYRIGHT -rw-r--r--. 1 root root 366447449 Apr 9 15:27 hadoop-2.9.2.tar.gz drwxr-xr-x. 3 10 143 4096 Dec 16 03:45 include -rw-r--r--. 1 10 143 5207434 Dec 12 17:07 javafx-src.zip drwxr-xr-x. 5 10 143 4096 Dec 16 03:45 jre drwxr-xr-x. 5 10 143 4096 Dec 16 03:45 lib -r--r--r--. 1 10 143 40 Dec 16 03:45 LICENSE drwxr-xr-x. 4 10 143 4096 Dec 16 03:45 man -r--r--r--. 1 10 143 159 Dec 16 03:45 README.html -rw-r--r--. 1 10 143 424 Dec 16 03:45 release -rw-r--r--. 1 10 143 21103945 Dec 16 03:45 src.zip -rw-r--r--. 1 10 143 108109 Dec 12 17:07 THIRDPARTYLICENSEREADME-JAVAFX.txt -r--r--r--. 1 10 143 155002 Dec 16 03:45 THIRDPARTYLICENSEREADME.txt [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# tail -3 /etc/profile #Add by yinzhengjie JAVA_HOME=/yinzhengjie/softwares/jdk1.8.0_201 PATH=$PATH:$JAVA_HOME/bin [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# source /etc/profile [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# java -version java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) [root@node101.yinzhengjie.org.cn ~]#
5>.将环境同步到其他节点
[root@node101.yinzhengjie.org.cn ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa Generating public/private rsa key pair. Created directory '/root/.ssh'. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:Ytkk9uzXOlYJPLDRaUAyqDzYv1n3CRk6NjN/nuhDbDo root@node101.yinzhengjie.org.cn The key's randomart image is: +---[RSA 2048]----+ | .o.oo . | | . oo + | | + . o .* | |. = . Bo + | | o +oSo o . | | ..OoB .o | | = @.o.o. | | o E oo*o | | oo=+. | +----[SHA256]-----+ [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ssh-copy-id root@node102.yinzhengjie.org.cn /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node102.yinzhengjie.org.cn (172.30.1.102)' can't be established. ECDSA key fingerprint is SHA256:rDA5nSO2LcozxK76hXrtZ1xiXXZTXqQWu+wkBdpMDQA. ECDSA key fingerprint is MD5:fd:75:9d:2b:28:ef:a2:0c:e2:c5:fc:fb:e9:5f:ee:c1. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node102.yinzhengjie.org.cn's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@node102.yinzhengjie.org.cn'" and check to make sure that only the key(s) you wanted were added. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ssh-copy-id root@node103.yinzhengjie.org.cn /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host 'node103.yinzhengjie.org.cn (172.30.1.103)' can't be established. ECDSA key fingerprint is SHA256:5ucWsWQo98ucT5KLfpkXT9DtxurZgMQEMAtynmncvvE. ECDSA key fingerprint is MD5:6b:fd:ed:8e:83:33:86:97:b0:4c:9f:23:87:50:85:4e. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@node103.yinzhengjie.org.cn's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@node103.yinzhengjie.org.cn'" and check to make sure that only the key(s) you wanted were added. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp -r /yinzhengjie/ root@node102.yinzhengjie.org.cn:/ ...... org.eclipse.equinox.p2.ql_2.0.100.v20131211-1531.jar 100% 8979 17.5MB/s 00:00 org.eclipse.e4.ui.workbench.addons.swt.nl_zh_4.4.0.v20140623020002.jar 100% 2738 6.2MB/s 00:00 com.jrockit.mc.flightrecorder.configuration_5.5.2.174165.jar 100% 3397 7.7MB/s 00:00 org.eclipse.equinox.p2.engine.nl_zh_4.4.0.v20140623020002.jar 100% 2592 5.6MB/s 00:00 org.eclipse.osgi.services_3.4.0.v20140312-2051.jar 100% 88KB 66.5MB/s 00:00 com.jrockit.mc.greychartplugin_5.5.2.174165.jar 100% 131KB 72.1MB/s 00:00 org.eclipse.equinox.p2.touchpoint.natives_1.1.100.v20140523-0116.jar 100% 52KB 55.8MB/s 00:00 org.eclipse.ui.net.nl_zh_4.4.0.v20140623020002.jar 100% 2868 7.8MB/s 00:00 org.eclipse.equinox.p2.ui.nl_zh_4.4.0.v20140623020002.jar 100% 4529 10.3MB/s 00:00 org.eclipse.core.filesystem_1.4.100.v20140514-1614.jar 100% 57KB 47.0MB/s 00:00 org.eclipse.equinox.p2.director.app.nl_zh_4.4.0.v20140623020002.jar 100% 2613 3.7MB/s 00:00 org.eclipse.e4.core.contexts_1.3.100.v20140407-1019.jar 100% 48KB 22.5MB/s 00:00 com.jrockit.mc.rjmx.ui.ja_5.5.2.174165.jar 100% 9550 14.1MB/s 00:00 org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20131217-1203.jar 100% 25KB 35.9MB/s 00:00 org.eclipse.equinox.p2.engine.nl_ja_4.4.0.v20140623020002.jar 100% 4522 11.0MB/s 00:00 org.eclipse.jface.databinding_1.6.200.v20140528-1422.jar 100% 271KB 89.7MB/s 00:00 org.eclipse.core.resources_3.9.1.v20140825-1431.jar 100% 814KB 90.9MB/s 00:00 com.jrockit.mc.common_5.5.2.174165.jar 100% 240KB 86.9MB/s 00:00 artifacts.xml 100% 1388 3.2MB/s 00:00 com.oracle.jmc.executable.gtk.linux.x86_64_5.5.2 100% 43KB 45.9MB/s 00:00 com.jrockit.mc.rcp.product_root_5.5.2.174165 100% 3816KB 101.7MB/s 00:00 org.eclipse.rcp_root_4.4.0.v20141007-2301 100% 36KB 42.6MB/s 00:00 org.eclipse.equinox.p2.metadata.repository.prefs 100% 3405 5.4MB/s 00:00 org.eclipse.equinox.p2.artifact.repository.prefs 100% 8028 10.3MB/s 00:00 1512678761228.profile.gz 100% 105KB 65.7MB/s 00:00 .lock 100% 0 0.0KB/s 00:00 1512678763613.profile.gz 100% 105KB 75.2MB/s 00:00 1512678749009.profile.gz 100% 364 982.8KB/s 00:00 1512678748591.profile.gz 100% 360 972.2KB/s 00:00 ct.sym 100% 17MB 115.5MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp -r /yinzhengjie/ root@node103.yinzhengjie.org.cn:/ ...... org.eclipse.equinox.p2.ql_2.0.100.v20131211-1531.jar 100% 8979 15.9MB/s 00:00 org.eclipse.e4.ui.workbench.addons.swt.nl_zh_4.4.0.v20140623020002.jar 100% 2738 6.2MB/s 00:00 com.jrockit.mc.flightrecorder.configuration_5.5.2.174165.jar 100% 3397 6.4MB/s 00:00 org.eclipse.equinox.p2.engine.nl_zh_4.4.0.v20140623020002.jar 100% 2592 5.2MB/s 00:00 org.eclipse.osgi.services_3.4.0.v20140312-2051.jar 100% 88KB 58.9MB/s 00:00 com.jrockit.mc.greychartplugin_5.5.2.174165.jar 100% 131KB 74.8MB/s 00:00 org.eclipse.equinox.p2.touchpoint.natives_1.1.100.v20140523-0116.jar 100% 52KB 59.2MB/s 00:00 org.eclipse.ui.net.nl_zh_4.4.0.v20140623020002.jar 100% 2868 7.9MB/s 00:00 org.eclipse.equinox.p2.ui.nl_zh_4.4.0.v20140623020002.jar 100% 4529 10.3MB/s 00:00 org.eclipse.core.filesystem_1.4.100.v20140514-1614.jar 100% 57KB 55.4MB/s 00:00 org.eclipse.equinox.p2.director.app.nl_zh_4.4.0.v20140623020002.jar 100% 2613 6.7MB/s 00:00 org.eclipse.e4.core.contexts_1.3.100.v20140407-1019.jar 100% 48KB 56.7MB/s 00:00 com.jrockit.mc.rjmx.ui.ja_5.5.2.174165.jar 100% 9550 15.2MB/s 00:00 org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20131217-1203.jar 100% 25KB 29.7MB/s 00:00 org.eclipse.equinox.p2.engine.nl_ja_4.4.0.v20140623020002.jar 100% 4522 8.3MB/s 00:00 org.eclipse.jface.databinding_1.6.200.v20140528-1422.jar 100% 271KB 77.4MB/s 00:00 org.eclipse.core.resources_3.9.1.v20140825-1431.jar 100% 814KB 100.5MB/s 00:00 com.jrockit.mc.common_5.5.2.174165.jar 100% 240KB 85.6MB/s 00:00 artifacts.xml 100% 1388 3.2MB/s 00:00 com.oracle.jmc.executable.gtk.linux.x86_64_5.5.2 100% 43KB 40.6MB/s 00:00 com.jrockit.mc.rcp.product_root_5.5.2.174165 100% 3816KB 101.1MB/s 00:00 org.eclipse.rcp_root_4.4.0.v20141007-2301 100% 36KB 34.7MB/s 00:00 org.eclipse.equinox.p2.metadata.repository.prefs 100% 3405 6.9MB/s 00:00 org.eclipse.equinox.p2.artifact.repository.prefs 100% 8028 16.2MB/s 00:00 1512678761228.profile.gz 100% 105KB 40.2MB/s 00:00 .lock 100% 0 0.0KB/s 00:00 1512678763613.profile.gz 100% 105KB 68.5MB/s 00:00 1512678749009.profile.gz 100% 364 1.1MB/s 00:00 1512678748591.profile.gz 100% 360 905.7KB/s 00:00 ct.sym 100% 17MB 115.2MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp /etc/profile root@node102.yinzhengjie.org.cn:/etc/ profile 100% 1912 2.6MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp /etc/profile root@node103.yinzhengjie.org.cn:/etc/ profile 100% 1912 2.5MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
6>.安装ansible软件
[root@node101.yinzhengjie.org.cn ~/Downloads]# yum -y install ansible Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/2): extras/7/x86_64/primary_db | 187 kB 00:00:00 (2/2): updates/7/x86_64/primary_db | 3.4 MB 00:00:01 Resolving Dependencies --> Running transaction check ---> Package ansible.noarch 0:2.4.2.0-2.el7 will be installed --> Processing Dependency: sshpass for package: ansible-2.4.2.0-2.el7.noarch --> Processing Dependency: python2-jmespath for package: ansible-2.4.2.0-2.el7.noarch --> Processing Dependency: python-passlib for package: ansible-2.4.2.0-2.el7.noarch --> Processing Dependency: python-paramiko for package: ansible-2.4.2.0-2.el7.noarch --> Processing Dependency: python-jinja2 for package: ansible-2.4.2.0-2.el7.noarch --> Processing Dependency: python-httplib2 for package: ansible-2.4.2.0-2.el7.noarch --> Running transaction check ---> Package python-httplib2.noarch 0:0.9.2-1.el7 will be installed ---> Package python-jinja2.noarch 0:2.7.2-2.el7 will be installed --> Processing Dependency: python-babel >= 0.8 for package: python-jinja2-2.7.2-2.el7.noarch --> Processing Dependency: python-markupsafe for package: python-jinja2-2.7.2-2.el7.noarch ---> Package python-paramiko.noarch 0:2.1.1-9.el7 will be installed ---> Package python-passlib.noarch 0:1.6.5-2.el7 will be installed ---> Package python2-jmespath.noarch 0:0.9.0-3.el7 will be installed ---> Package sshpass.x86_64 0:1.06-2.el7 will be installed --> Running transaction check ---> Package python-babel.noarch 0:0.9.6-8.el7 will be installed ---> Package python-markupsafe.x86_64 0:0.11-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================================================================================================================================== Package Arch Version Repository Size ========================================================================================================================================================================================================================================== Installing: ansible noarch 2.4.2.0-2.el7 extras 7.6 M Installing for dependencies: python-babel noarch 0.9.6-8.el7 base 1.4 M python-httplib2 noarch 0.9.2-1.el7 extras 115 k python-jinja2 noarch 2.7.2-2.el7 base 515 k python-markupsafe x86_64 0.11-10.el7 base 25 k python-paramiko noarch 2.1.1-9.el7 updates 269 k python-passlib noarch 1.6.5-2.el7 extras 488 k python2-jmespath noarch 0.9.0-3.el7 extras 39 k sshpass x86_64 1.06-2.el7 extras 21 k Transaction Summary ========================================================================================================================================================================================================================================== Install 1 Package (+8 Dependent packages) Total download size: 10 M Installed size: 51 M Downloading packages: python-httplib2-0.9.2-1.el7.no FAILED http://mirrors.cloud.aliyuncs.com/centos/7/extras/x86_64/Packages/python-httplib2-0.9.2-1.el7.noarch.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error" ] 0.0 B/s | 0 B --:--:-- ETA Trying other mirror. python-jinja2-2.7.2-2.el7.noar FAILED http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/python-jinja2-2.7.2-2.el7.noarch.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error" ] 0.0 B/s | 0 B --:--:-- ETA Trying other mirror. (1/9): python-markupsafe-0.11-10.el7.x86_64.rpm | 25 kB 00:00:00 (2/9): python-babel-0.9.6-8.el7.noarch.rpm | 1.4 MB 00:00:00 (3/9): python-paramiko-2.1.1-9.el7.noarch.rpm | 269 kB 00:00:01 (4/9): ansible-2.4.2.0-2.el7.noarch.rpm | 7.6 MB 00:00:04 (5/9): python2-jmespath-0.9.0-3.el7.noarch.rpm | 39 kB 00:00:00 (6/9): sshpass-1.06-2.el7.x86_64.rpm | 21 kB 00:00:00 (7/9): python-httplib2-0.9.2-1.el7.noarch.rpm | 115 kB 00:00:00 (8/9): python-jinja2-2.7.2-2.el7.noarch.rpm | 515 kB 00:00:00 (9/9): python-passlib-1.6.5-2.el7.noarch.rpm | 488 kB 00:00:05 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 1.7 MB/s | 10 MB 00:00:06 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : python-httplib2-0.9.2-1.el7.noarch 1/9 Installing : sshpass-1.06-2.el7.x86_64 2/9 Installing : python-babel-0.9.6-8.el7.noarch 3/9 Installing : python-paramiko-2.1.1-9.el7.noarch 4/9 Installing : python2-jmespath-0.9.0-3.el7.noarch 5/9 Installing : python-passlib-1.6.5-2.el7.noarch 6/9 Installing : python-markupsafe-0.11-10.el7.x86_64 7/9 Installing : python-jinja2-2.7.2-2.el7.noarch 8/9 Installing : ansible-2.4.2.0-2.el7.noarch 9/9 Verifying : python-markupsafe-0.11-10.el7.x86_64 1/9 Verifying : python-jinja2-2.7.2-2.el7.noarch 2/9 Verifying : python-passlib-1.6.5-2.el7.noarch 3/9 Verifying : python2-jmespath-0.9.0-3.el7.noarch 4/9 Verifying : python-paramiko-2.1.1-9.el7.noarch 5/9 Verifying : python-babel-0.9.6-8.el7.noarch 6/9 Verifying : ansible-2.4.2.0-2.el7.noarch 7/9 Verifying : sshpass-1.06-2.el7.x86_64 8/9 Verifying : python-httplib2-0.9.2-1.el7.noarch 9/9 Installed: ansible.noarch 0:2.4.2.0-2.el7 Dependency Installed: python-babel.noarch 0:0.9.6-8.el7 python-httplib2.noarch 0:0.9.2-1.el7 python-jinja2.noarch 0:2.7.2-2.el7 python-markupsafe.x86_64 0:0.11-10.el7 python-paramiko.noarch 0:2.1.1-9.el7 python-passlib.noarch 0:1.6.5-2.el7 python2-jmespath.noarch 0:0.9.0-3.el7 sshpass.x86_64 0:1.06-2.el7 Complete! [root@node101.yinzhengjie.org.cn ~/Downloads]#
[root@node101.yinzhengjie.org.cn ~]# tail -5 /etc/ansible/hosts #编辑ansible的主机配置文件 [namenode] node101.yinzhengjie.org.cn [datanode] node[101:103].yinzhengjie.org.cn [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'ln -s /yinzhengjie/softwares/jdk1.8.0_201/bin/jps /usr/local/bin/' [WARNING]: Consider using file module with state=link rather than running ln node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> [root@node101.yinzhengjie.org.cn ~]#
二.搭建zookeeper集群
1>.下载zookeeper软件(下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/)
[root@node101.yinzhengjie.org.cn ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz --2019-04-12 08:48:40-- https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1 Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37676320 (36M) [application/x-gzip] Saving to: ‘zookeeper-3.4.14.tar.gz’ 100%[============================================================================================================================================>] 37,676,320 7.57MB/s in 4.5s 2019-04-12 08:48:45 (7.94 MB/s) - ‘zookeeper-3.4.14.tar.gz’ saved [37676320/37676320] [root@node101.yinzhengjie.org.cn ~]#
2>.解压zookeeper并配置环境变量
[root@node101.yinzhengjie.org.cn ~]# tar -zxf zookeeper-3.4.14.tar.gz -C /yinzhengjie/softwares/ [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/zookeeper-3.4.14/ total 1672 drwxr-xr-x 2 2002 2002 202 Mar 6 09:09 bin -rw-rw-r-- 1 2002 2002 97426 Mar 6 08:50 build.xml drwxr-xr-x 2 2002 2002 77 Mar 6 09:09 conf drwxr-xr-x 2 2002 2002 4096 Mar 6 09:10 dist-maven -rw-rw-r-- 1 2002 2002 1709 Mar 6 08:50 ivysettings.xml -rw-rw-r-- 1 2002 2002 10742 Mar 6 08:50 ivy.xml drwxr-xr-x 4 2002 2002 308 Mar 6 09:09 lib -rw-rw-r-- 1 2002 2002 11970 Mar 6 08:50 LICENSE.txt -rw-rw-r-- 1 2002 2002 3132 Mar 6 08:50 NOTICE.txt -rw-rw-r-- 1 2002 2002 31622 Mar 6 08:50 pom.xml -rw-rw-r-- 1 2002 2002 1765 Mar 6 08:50 README.md -rw-rw-r-- 1 2002 2002 1770 Mar 6 08:50 README_packaging.txt drwxr-xr-x 3 2002 2002 22 Mar 6 08:50 src -rw-rw-r-- 1 2002 2002 1515359 Mar 6 08:50 zookeeper-3.4.14.jar -rw-rw-r-- 1 2002 2002 836 Mar 6 09:10 zookeeper-3.4.14.jar.asc -rw-rw-r-- 1 2002 2002 33 Mar 6 08:50 zookeeper-3.4.14.jar.md5 -rw-rw-r-- 1 2002 2002 41 Mar 6 08:50 zookeeper-3.4.14.jar.sha1 drwxr-xr-x 3 2002 2002 47 Mar 6 09:09 zookeeper-client drwxr-xr-x 12 2002 2002 4096 Mar 6 09:09 zookeeper-contrib drwxr-xr-x 7 2002 2002 4096 Mar 6 09:09 zookeeper-docs drwxr-xr-x 3 2002 2002 35 Mar 6 09:09 zookeeper-it drwxr-xr-x 4 2002 2002 46 Mar 6 09:09 zookeeper-jute drwxr-xr-x 5 2002 2002 176 Mar 6 09:09 zookeeper-recipes drwxr-xr-x 3 2002 2002 32 Mar 6 09:09 zookeeper-server [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# tail -3 /etc/profile #ADD ZOOKEEPER_HOME PATH ZOOKEEPER_HOME=/yinzhengjie/softwares/zookeeper-3.4.14 PATH=$PATH:$ZOOKEEPER_HOME/bin [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# source /etc/profile [root@node101.yinzhengjie.org.cn ~]#
3>.配置zookeeper的配置文件
[root@node101.yinzhengjie.org.cn ~]# cp /yinzhengjie/softwares/zookeeper-3.4.14/conf/zoo_sample.cfg /yinzhengjie/softwares/zookeeper-3.4.14/conf/zoo.cfg [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/zookeeper-3.4.14/conf/ total 16 -rw-rw-r-- 1 2002 2002 535 Mar 6 08:50 configuration.xsl -rw-rw-r-- 1 2002 2002 2161 Mar 6 08:50 log4j.properties -rw-r--r-- 1 root root 922 Apr 12 08:55 zoo.cfg -rw-rw-r-- 1 2002 2002 922 Mar 6 08:50 zoo_sample.cfg [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/zookeeper-3.4.14/conf/zoo.cfg # 滴答,计时的基本单位,默认是2000毫秒,即2秒。它是zookeeper最小的时间单位,用于丈量心跳时间和超时时间等,通常设置成默认2秒即可。 tickTime=2000 # 初始化限制是10滴答,默认是10个滴答,即默认是20秒。指定follower节点初始化是链接leader节点的最大tick次数。 initLimit=5 # 数据同步的时间限制,默认是5个滴答,即默认时间是10秒。设定了follower节点与leader节点进行同步的最大时间。与initLimit类似,它也是以tickTime为单位进行指定的。 syncLimit=2 # 指定zookeeper的工作目录,这是一个非常重要的参数,zookeeper会在内存中在内存只能中保存系统快照,并定期写入该路径指定的文件夹中。生产环境中需要注意该文件夹的磁盘占用情况。 dataDir=/home/yinzhengjie/zookeeper # 监听zookeeper的默认端口。zookeeper监听客户端链接的端口,一般设置成默认2181即可。 clientPort=2181 # 这个操作将限制连接到 ZooKeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端。此配置选项可以用来阻止某些类别的 Dos 攻击。将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制。 #maxClientCnxns=60 # 在上文中已经提到,3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能。 #autopurge.purgeInterval=1 # 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。 #autopurge.snapRetainCount=3 #server.x=[hostname]:nnnnn[:nnnnn],这里的x是一个数字,与myid文件中的id是一致的。右边可以配置两个端口,第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信。 server.101=node101.yinzhengjie.org.cn:2888:3888 server.102=node102.yinzhengjie.org.cn:2888:3888 server.103=node103.yinzhengjie.org.cn:2888:3888 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/zookeeper-3.4.14/conf/java.env #!/bin/bash #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie #EMAIL:y1053419035@qq.com #指定JDK的安装路径 export JAVA_HOME=/yinzhengjie/softwares/jdk1.8.0_201 #指定zookeeper的heap内存大小 export JVMFLAGS="-Xms256m -Xmx256m $JVMFLAGS" [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
4>.编写zookeeper的启动脚本
[root@node101.yinzhengjie.org.cn ~]# vi /usr/local/bin/xzk.sh [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# cat /usr/local/bin/xzk.sh #!/bin/bash #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie #EMAIL:y1053419035@qq.com #判断用户是否传参 if [ $# -ne 1 ];then echo "无效参数,用法为: $0 {start|stop|restart|status}" exit fi #获取用户输入的命令 cmd=$1 #定义函数功能 function zookeeperManger(){ case $cmd in start) echo "启动服务" remoteExecution start ;; stop) echo "停止服务" remoteExecution stop ;; restart) echo "重启服务" remoteExecution restart ;; status) echo "查看状态" remoteExecution status ;; *) echo "无效参数,用法为: $0 {start|stop|restart|status}" ;; esac } #定义执行的命令 function remoteExecution(){ for (( i=101 ; i<=103 ; i++ )) ; do tput setaf 2 echo ========== node${i}.yinzhengjie.org.cn zkServer.sh $1 ================ tput setaf 9 ssh node${i}.yinzhengjie.org.cn "source /etc/profile ; zkServer.sh $1" done } #调用函数 zookeeperManger [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ll /usr/local/bin/xzk.sh -rw-r--r-- 1 root root 1125 Apr 12 09:03 /usr/local/bin/xzk.sh [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# chmod +x /usr/local/bin/xzk.sh [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ll /usr/local/bin/xzk.sh -rwxr-xr-x 1 root root 1125 Apr 12 09:03 /usr/local/bin/xzk.sh [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
5>.创建myid文件并写入服务器编号
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'mkdir /home/yinzhengjie/zookeeper/' [WARNING]: Consider using file module with state=directory rather than running mkdir node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# for (( i=101;i<=103;i++ )) do ssh node${i}.yinzhengjie.org.cn "echo -n $i > /home/yinzhengjie/zookeeper/myid" ;done [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'cat /home/yinzhengjie/zookeeper/myid' node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> 102 node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> 103 node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> 101 [root@node101.yinzhengjie.org.cn ~]#
6>.分发配置文件
[root@node101.yinzhengjie.org.cn ~]# scp /etc/profile node102.yinzhengjie.org.cn:/etc/ profile 100% 2127 1.2MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp /etc/profile node103.yinzhengjie.org.cn:/etc/ profile 100% 2127 1.4MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp -r /yinzhengjie/softwares/zookeeper-3.4.14/ node102.yinzhengjie.org.cn:/yinzhengjie/softwares/ ........ log.42 100% 184 128.3KB/s 00:00 log.63b 100% 48KB 22.7MB/s 00:00 snapshot.0 100% 296 277.6KB/s 00:00 snapshot.272 100% 55KB 26.5MB/s 00:00 snapshot.273 100% 55KB 24.3MB/s 00:00 snapshot.639 100% 140KB 27.2MB/s 00:00 snapshot.83f 100% 4824 3.5MB/s 00:00 minikdc-krb5.conf 100% 1103 1.3MB/s 00:00 minikdc.ldiff 100% 1630 2.2MB/s 00:00 log.100000001 100% 2401KB 50.2MB/s 00:00 log.100001bf0 100% 1001KB 59.6MB/s 00:00 snapshot.100000000 100% 73 17.1KB/s 00:00 snapshot.100001bec 100% 2507KB 61.6MB/s 00:00 check_compatibility.py 100% 7212 4.7MB/s 00:00 checkstyle-noframes-sorted.xsl 100% 5489 6.5MB/s 00:00 checkstyle.xml 100% 7489 7.3MB/s 00:00 findbugsExcludeFile.xml 100% 5027 6.6MB/s 00:00 log4j.properties 100% 2712 1.9MB/s 00:00 test-patch.properties 100% 855 930.7KB/s 00:00 test-github-pr.sh 100% 24KB 9.7MB/s 00:00 test-patch.sh 100% 24KB 19.4MB/s 00:00 pom.xml 100% 10KB 7.6MB/s 00:00 LICENSE.txt 100% 12KB 5.9MB/s 00:00 NOTICE.txt 100% 3132 1.2MB/s 00:00 README.md 100% 1765 1.4MB/s 00:00 README_packaging.txt 100% 1770 2.5MB/s 00:00 build.xml 100% 95KB 39.5MB/s 00:00 ivy.xml 100% 10KB 8.2MB/s 00:00 ivysettings.xml 100% 1709 1.3MB/s 00:00 pom.xml 100% 31KB 8.9MB/s 00:00 zookeeper-3.4.14.jar 100% 1480KB 41.5MB/s 00:00 zookeeper-3.4.14.jar.md5 100% 33 25.6KB/s 00:00 zookeeper-3.4.14.jar.sha1 100% 41 60.7KB/s 00:00 zookeeper-3.4.14.jar.asc 100% 836 1.2MB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp -r /yinzhengjie/softwares/zookeeper-3.4.14/ node103.yinzhengjie.org.cn:/yinzhengjie/softwares/ ...... snapshot.273 100% 55KB 14.8MB/s 00:00 snapshot.639 100% 140KB 21.7MB/s 00:00 snapshot.83f 100% 4824 4.4MB/s 00:00 minikdc-krb5.conf 100% 1103 1.0MB/s 00:00 minikdc.ldiff 100% 1630 1.4MB/s 00:00 log.100000001 100% 2401KB 53.2MB/s 00:00 log.100001bf0 100% 1001KB 46.5MB/s 00:00 snapshot.100000000 100% 73 40.2KB/s 00:00 snapshot.100001bec 100% 2507KB 57.4MB/s 00:00 check_compatibility.py 100% 7212 1.4MB/s 00:00 checkstyle-noframes-sorted.xsl 100% 5489 4.4MB/s 00:00 checkstyle.xml 100% 7489 5.0MB/s 00:00 findbugsExcludeFile.xml 100% 5027 4.2MB/s 00:00 log4j.properties 100% 2712 2.5MB/s 00:00 test-patch.properties 100% 855 376.7KB/s 00:00 test-github-pr.sh 100% 24KB 6.3MB/s 00:00 test-patch.sh 100% 24KB 13.5MB/s 00:00 pom.xml 100% 10KB 6.5MB/s 00:00 LICENSE.txt 100% 12KB 4.9MB/s 00:00 NOTICE.txt 100% 3132 2.8MB/s 00:00 README.md 100% 1765 1.9MB/s 00:00 README_packaging.txt 100% 1770 1.6MB/s 00:00 build.xml 100% 95KB 27.3MB/s 00:00 ivy.xml 100% 10KB 10.1MB/s 00:00 ivysettings.xml 100% 1709 1.3MB/s 00:00 pom.xml 100% 31KB 13.6MB/s 00:00 zookeeper-3.4.14.jar 100% 1480KB 42.5MB/s 00:00 zookeeper-3.4.14.jar.md5 100% 33 38.8KB/s 00:00 zookeeper-3.4.14.jar.sha1 100% 41 29.3KB/s 00:00 zookeeper-3.4.14.jar.asc 100% 836 690.2KB/s 00:00 [root@node101.yinzhengjie.org.cn ~]#
7>.启动zookeeper集群
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'grep SELINUX= /etc/selinux/config | grep -v ^#' node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> SELINUX=enforcing node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> SELINUX=enforcing node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> SELINUX=enforcing [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config' [WARNING]: Consider using template or lineinfile module rather than running sed node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'grep SELINUX= /etc/selinux/config | grep -v ^#' node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> SELINUX=disabled node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> SELINUX=disabled node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> SELINUX=disabled [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'getenforce' node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> Enforcing node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> Enforcing node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> Enforcing [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'setenforce 0' node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'getenforce' node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> Permissive node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> Permissive node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> Permissive [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'systemctl status firewalld' node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-04-23 11:22:42 CST; 2 days ago Docs: man:firewalld(1) Main PID: 3916 (firewalld) Tasks: 2 CGroup: /system.slice/firewalld.service └─3916 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Apr 23 11:22:41 node103.yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Apr 23 11:22:42 node103.yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-04-23 11:22:27 CST; 2 days ago Docs: man:firewalld(1) Main PID: 3929 (firewalld) Tasks: 2 CGroup: /system.slice/firewalld.service └─3929 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Apr 23 11:22:26 node102.yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Apr 23 11:22:27 node102.yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-04-23 11:22:10 CST; 2 days ago Docs: man:firewalld(1) Main PID: 4068 (firewalld) Tasks: 2 CGroup: /system.slice/firewalld.service └─4068 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Apr 23 11:22:09 node101.yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Apr 23 11:22:10 node101.yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'systemctl stop firewalld' node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'systemctl disable firewalld' node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'systemctl status firewalld' node103.yinzhengjie.org.cn | FAILED | rc=3 >> ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) Apr 23 11:22:41 node103.yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Apr 23 11:22:42 node103.yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. Apr 25 14:50:48 node103.yinzhengjie.org.cn systemd[1]: Stopping firewalld - dynamic firewall daemon... Apr 25 14:50:49 node103.yinzhengjie.org.cn systemd[1]: Stopped firewalld - dynamic firewall daemon.non-zero return code node102.yinzhengjie.org.cn | FAILED | rc=3 >> ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) Apr 23 11:22:26 node102.yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Apr 23 11:22:27 node102.yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. Apr 25 14:50:48 node102.yinzhengjie.org.cn systemd[1]: Stopping firewalld - dynamic firewall daemon... Apr 25 14:50:49 node102.yinzhengjie.org.cn systemd[1]: Stopped firewalld - dynamic firewall daemon.non-zero return code node101.yinzhengjie.org.cn | FAILED | rc=3 >> ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) Apr 23 11:22:09 node101.yinzhengjie.org.cn systemd[1]: Starting firewalld - dynamic firewall daemon... Apr 23 11:22:10 node101.yinzhengjie.org.cn systemd[1]: Started firewalld - dynamic firewall daemon. Apr 25 14:50:48 node101.yinzhengjie.org.cn systemd[1]: Stopping firewalld - dynamic firewall daemon... Apr 25 14:50:49 node101.yinzhengjie.org.cn systemd[1]: Stopped firewalld - dynamic firewall daemon.non-zero return code [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'jps' node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> Jps node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> Jps node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> Jps [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# xzk.sh start 启动服务 ========== node101.yinzhengjie.org.cn zkServer.sh start ================ ZooKeeper JMX enabled by default Using config: /yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf/zoo.cfg Starting zookeeper ... STARTED ========== node102.yinzhengjie.org.cn zkServer.sh start ================ ZooKeeper JMX enabled by default Using config: /yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf/zoo.cfg Starting zookeeper ... STARTED ========== node103.yinzhengjie.org.cn zkServer.sh start ================ ZooKeeper JMX enabled by default Using config: /yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# xzk.sh status 查看状态 ========== node101.yinzhengjie.org.cn zkServer.sh status ================ ZooKeeper JMX enabled by default Using config: /yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf/zoo.cfg Mode: follower ========== node102.yinzhengjie.org.cn zkServer.sh status ================ ZooKeeper JMX enabled by default Using config: /yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf/zoo.cfg Mode: leader ========== node103.yinzhengjie.org.cn zkServer.sh status ================ ZooKeeper JMX enabled by default Using config: /yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf/zoo.cfg Mode: follower [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# ansible all -m shell -a 'jps' node103.yinzhengjie.org.cn | SUCCESS | rc=0 >> QuorumPeerMain Jps node102.yinzhengjie.org.cn | SUCCESS | rc=0 >> QuorumPeerMain Jps node101.yinzhengjie.org.cn | SUCCESS | rc=0 >> QuorumPeerMain Jps [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# zkCli.sh Connecting to localhost:2181 2019-04-12 09:23:04,270 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT 2019-04-12 09:23:04,272 [myid:] - INFO [main:Environment@100] - Client environment:host.name=node101.yinzhengjie.org.cn 2019-04-12 09:23:04,273 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_201 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/yinzhengjie/softwares/jdk1.8.0_201/jre 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-server/target/classes:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../build/classes:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-server/target/lib/*.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../build/lib/*.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/slf4j-log4j12-1.7.25.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/slf4j-api-1.7.25.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/netty-3.10.6.Final.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/log4j-1.2.17.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/jline-0.9.94.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/audience-annotations-0.5.0.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-3.4.14.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-server/src/main/resources/lib/*.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf: 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA> 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64 2019-04-12 09:23:04,275 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-957.el7.x86_64 2019-04-12 09:23:04,276 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root 2019-04-12 09:23:04,276 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root 2019-04-12 09:23:04,276 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/root 2019-04-12 09:23:04,277 [myid:] - INFO [main:ZooKeeper@442] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5ce65a89 Welcome to ZooKeeper! 2019-04-12 09:23:04,303 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1025] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) JLine support is enabled 2019-04-12 09:23:04,365 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@879] - Socket connection established to localhost/127.0.0.1:2181, initiating session 2019-04-12 09:23:04,395 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x6500007f14d00000, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: localhost:2181(CONNECTED) 0] ls / [zookeeper] [zk: localhost:2181(CONNECTED) 1] ls /zookeeper [quota] [zk: localhost:2181(CONNECTED) 2] ls /zookeeper/quota [] [zk: localhost:2181(CONNECTED) 3] quit Quitting... 2019-04-12 09:23:13,101 [myid:] - INFO [main:ZooKeeper@693] - Session: 0x6500007f14d00000 closed 2019-04-12 09:23:13,102 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@522] - EventThread shut down for session: 0x6500007f14d00000 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
三.zookeeper客户端四字符指令
ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令,接下来我们一起体验一下吧。
[root@node101.yinzhengjie.org.cn ~]# echo conf | nc node101.yinzhengjie.org.cn 2181 #查看配置信息 clientPort=2181 dataDir=/home/yinzhengjie/zookeeper/version-2 dataLogDir=/home/yinzhengjie/zookeeper/version-2 tickTime=2000 maxClientCnxns=60 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=101 initLimit=5 syncLimit=2 electionAlg=3 electionPort=3888 quorumPort=2888 peerType=0 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo ruok | nc node101.yinzhengjie.org.cn 2181 #注意,他会恢复一个字符串为“imok”,表示其为存活状态 imok[root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo ruok | nc node102.yinzhengjie.org.cn 2181 #注意,如果恢复的不是"imok",那就说明该节点挂掉啦!注意管擦好输出结果哟! Ncat: Connection refused. [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo ruok | nc node103.yinzhengjie.org.cn 2181 imok[root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo envi | nc node103.yinzhengjie.org.cn 2181 #查看指定zookeeper主机环境变量 Environment: zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT host.name=node103.yinzhengjie.org.cn java.version=1.8.0_201 java.vendor=Oracle Corporation java.home=/yinzhengjie/softwares/jdk1.8.0_201/jre java.class.path=/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-server/target/classes:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../build/classes:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-server/target/lib/*.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../build/lib/*.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/slf4j-log4j12-1.7.25.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/slf4j-api-1.7.25.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/netty-3.10.6.Final.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/log4j-1.2.17.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/jline-0.9.94.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../lib/audience-annotations-0.5.0.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-3.4.14.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../zookeeper-server/src/main/resources/lib/*.jar:/yinzhengjie/softwares/zookeeper-3.4.14/bin/../conf: java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib java.io.tmpdir=/tmp java.compiler=<NA> os.name=Linux os.arch=amd64 os.version=3.10.0-957.el7.x86_64 user.name=root user.home=/root user.dir=/root [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo cons | nc node103.yinzhengjie.org.cn 2181 /172.30.1.102:57816[1](queued=0,recved=20,sent=20,sid=0x67000b2416210000,lop=PING,est=1556176886312,to=30000,lcxid=0x1,lzxid=0xffffffffffffffff,lresp=187317065,llat=0,minlat=0,avglat=0,maxlat=5) /172.30.1.101:57124[0](queued=0,recved=1,sent=0) /127.0.0.1:50638[1](queued=0,recved=17,sent=17,sid=0x67000b2416210001,lop=GETC,est=1556176940249,to=30000,lcxid=0x4,lzxid=0x400000005,lresp=187315052,llat=1,minlat=0,avglat=0,maxlat=4) [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo dump | nc node103.yinzhengjie.org.cn 2181 #查看未处理会话的节点 SessionTracker dump: org.apache.zookeeper.server.quorum.LearnerSessionTracker@515b070f ephemeral nodes dump: Sessions with Ephemerals (0): [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo stat | nc node103.yinzhengjie.org.cn 2181 #查看统计信息 Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT Clients: /172.30.1.102:57816[1](queued=0,recved=36,sent=36) /127.0.0.1:50638[1](queued=0,recved=33,sent=33) /172.30.1.101:57128[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/5 Received: 84 Sent: 83 Connections: 3 Outstanding: 0 Zxid: 0x400000005 Mode: follower Node count: 4 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo wchs | nc node103.yinzhengjie.org.cn 2181 #查看链接的watch信息 0 connections watching 0 paths Total watches:0 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo wchc | nc node103.yinzhengjie.org.cn 2181 #通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。 wchc is not executed because it is not in the whitelist. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo wchp | nc node103.yinzhengjie.org.cn 2181 #通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。 wchp is not executed because it is not in the whitelist. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo reqs | nc node103.yinzhengjie.org.cn 2181 #查看未经处理的请求。 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo crst | nc node101.yinzhengjie.org.cn 2181 #重置所有的客户端连接 Connection stats reset. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo dump | nc node101.yinzhengjie.org.cn 2181 #打印集群的所有会话信息,包括ID,以及临时节点等信息。用在Leader节点上才有效果。 SessionTracker dump: Session Sets (7): 0 expire at Sat Jan 03 12:27:32 CST 1970: 0 expire at Sat Jan 03 12:27:40 CST 1970: 0 expire at Sat Jan 03 12:27:42 CST 1970: 0 expire at Sat Jan 03 12:27:50 CST 1970: 0 expire at Sat Jan 03 12:27:52 CST 1970: 1 expire at Sat Jan 03 12:28:00 CST 1970: 0x67000b2416210001 2 expire at Sat Jan 03 12:28:02 CST 1970: 0x65000b248f060000 0x67000b2416210000 ephemeral nodes dump: Sessions with Ephemerals (0): [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo srst | nc node101.yinzhengjie.org.cn 2181 #重置服务器统计信息 Server stats reset. [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo srvr | nc node101.yinzhengjie.org.cn 2181 #和stat输出信息一样,只不过少了客户端连接信息。 Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT Latency min/avg/max: 0/0/1 Received: 7 Sent: 7 Connections: 2 Outstanding: 0 Zxid: 0x400000006 Mode: leader Node count: 4 Proposal sizes last/min/max: -1/-1/-1 [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# echo mntr | nc node101.yinzhengjie.org.cn 2181 #输出比stat更为详细的服务器统计信息 zk_version 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT zk_avg_latency 0 zk_max_latency 1 zk_min_latency 0 zk_packets_received 13 zk_packets_sent 13 zk_num_alive_connections 2 zk_outstanding_requests 0 zk_server_state leader zk_znode_count 4 zk_watch_count 0 zk_ephemerals_count 0 zk_approximate_data_size 27 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 1048576 zk_fsync_threshold_exceed_count 0 zk_followers 2 zk_synced_followers 2 zk_pending_syncs 0 zk_last_proposal_size -1 zk_max_proposal_size -1 zk_min_proposal_size -1 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
参考链接1:https://www.cnblogs.com/yinzhengjie/p/10739218.html。
参加链接2:https://www.cnblogs.com/yinzhengjie/articles/10698719.html。
参考链接3:https://www.jianshu.com/p/4f11d7bfc9ce。
参考链接4:https://blog.csdn.net/u013673976/article/details/47321067。
参考链接5:https://blog.csdn.net/paincupid/article/details/78058087#Zookeeper_1782。