linux系统下安装zookeeper集群
- 格式:docx
- 大小:17.37 KB
- 文档页数:2
zookeeper、ZK安装、ZK配置、ZK使⽤-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介第⼆部分:zookeeper环境搭建 1、单机环境 2、集群环境第三部分:zookeeper基本使⽤ 1、java原⽣zk客户端api操作 2、zkClient客户端操作(推荐) 3、curator客户端操作(推荐)第四部分:zookeeper应⽤场景第五部分:zookeeper深⼊进阶第六部分:zookeeper源码分析-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介1、 zookeeper基本概念zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂并且容易出差错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并提供给⽤户⼀些简单的接⼝,zookeeper是⼀个典型的分布式⼀致性的解决⽅案(CP模式),分布式应⽤程序可以基于它实现数据订阅/发布、负载均衡,命名服务、集群管理、分布式锁和分布式队列等功能。
2、基本概念@1、集群⾓⾊通常在分布式系统中,构成⼀个集群中的每⼀台机器都有⾃⼰的⾓⾊,典型的是master/slave模式(主备模式),这种情况下能够处理写操作的机器成为master机器,把所有通过⼀步复制⽅式获取最新数据并且提供服务的机器为slave机器。
在zookeeper中没有是⽤主备模式,引⼊了Leader、Follower、Observer三种⾓⾊,在zk集群中所有的机器通过Leader选举来选Leader,Leader服务器为客户端提供读写服务,Follower和Observer都能提供读服务,唯⼀的区别是Observer不参与Leader选举,不参与写操作的过半写成功。
在Docker中部署ZooKeeper集群的详细教程一、介绍Docker是一种流行的容器化技术,允许开发人员将应用程序和其依赖项打包到一个可移植的容器中,实现软件环境的一致性和可移植性。
而ZooKeeper是一个开源的协调服务,用于分布式系统中的配置管理,命名服务和分布式锁等功能。
本文将详细介绍如何在Docker中部署ZooKeeper集群。
二、准备工作首先,需要在系统上安装Docker和Docker Compose。
具体的安装过程可以参考Docker和Docker Compose的官方文档。
安装完成后,确保Docker和Docker Compose正确运行。
三、创建Docker Compose文件在部署ZooKeeper集群之前,需要创建一个Docker Compose文件来定义集群中的容器。
创建一个新文件,命名为docker-compose.yml,并在其中输入以下内容:version: "3"services:zoo1:image: zookeeper:3.4.14restart: alwaysports:- "2181:2181"environment:ZOO_MY_ID: 1ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888volumes:- ./data/zoo1:/datazoo2:image: zookeeper:3.4.14restart: alwaysenvironment:ZOO_MY_ID: 2ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888volumes:- ./data/zoo2:/datazoo3:image: zookeeper:3.4.14restart: alwaysenvironment:ZOO_MY_ID: 3ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888volumes:- ./data/zoo3:/data在这个文件中,我们定义了三个ZooKeeper节点:zoo1、zoo2和zoo3。
Linux下安装zookeeper、配置zookeeper开机⾃启动本⽂主要介绍如何在Centos7下安装zookeeper以及如何使⽤。
安装JDK下载安装zookeeper启动zookeeper设置zookeeper开机⾃动启动⼀、安装JDK使⽤zookeeper前,必须先安装JDK,如何安装JDK,可以查看:⼆、下载安装zookeeper2.1 通过官⽹下载:。
本⽂中使⽤3.7.0版本。
// 进⼊下载⽬录并下载cd /usr/local/mkdir zookeepercd zookeeperwget https:///apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz注意:没有bin的是zk的源码包,可以看到也是maven项⽬,是需要编译打包才能使⽤如果下载的不是bin包,执⾏启动命令 zkServer.sh startzkServer启动失败,查看zk的⽇志⽂件,报如下错误:Error:Could not find or Load main class org.apache.zookeeper.server.quorum.QuorumPeerMain因此,需要下载bin包⽅可启动成功。
2.2 解压// 解压tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz2.3 修改配置⽂件// 1.进⼊配置⽂件⽬录cd apache-zookeeper-3.7.0-bin/conf// 2.将zoo_sample.cfg这个⽂件复制为zoo.cfg (注意:⽂件名⼀定要是zoo.cfg)cp zoo_sample.cfg zoo.cfg// 3.修改配置⽂件vim zoo.cfg修改zoo.cfg,修改前:修改后:注意:数据存放⽬录data由⾃⼰决定,但是启动服务前⼀定要确保对应的⽬录存在,不然启动会失败2.4 创建data⽂件夹// 创建data⽬录[root@localhost conf]# cd ../[root@localhost apache-zookeeper-3.7.0-bin]# pwd/usr/local/zookeeper/apache-zookeeper-3.7.0-bin[root@localhost apache-zookeeper-3.7.0-bin]# mkdir data[root@localhost apache-zookeeper-3.7.0-bin]# ll总⽤量44drwxr-xr-x. 2100010004096 3⽉172021 bindrwxr-xr-x. 2100010004096 12⽉2818:09 confdrwxr-xr-x. 2 root root 4096 12⽉2818:09 datadrwxr-xr-x. 5100010004096 3⽉172021 docsdrwxr-xr-x. 2 root root 4096 12⽉2818:04 lib-rw-r--r--. 11000100011358 3⽉172021 LICENSE.txt-rw-r--r--. 110001000432 3⽉172021 NOTICE.txt-rw-r--r--. 1100010002214 3⽉172021 README.md-rw-r--r--. 1100010003570 3⽉172021 README_packaging.md[root@localhost apache-zookeeper-3.7.0-bin]#三、启动zookeeper3.1 进⼊zookeeper下的bin⽬录cd /usr/local/zookeeper/apache-zookeeper-3.7.0-bin/bin3.2 执⾏启动命令./zkServer.sh start启动成功后如下:除了开启,再备注⼏个其他命令:// 停⽌./zkServer.sh stop// 重启./zkServer.sh restart// 查看状态./zkServer.sh status虽然这样可以正常启动,但是每次都要进⼊到zookeeper的bin⽬录下,为了避免⿇烦,可以将zookeeper设置开机启动四、设置zookeeper开机⾃动启动centos74.1 切换到/lib/systemd/system/⽬录,创建⾃启动⽂件cd /lib/systemd/system/vim zookeeper.service⽂件内容如下:[Unit]Description=zookeeperserviceAfter=network.target[Service]WorkingDirectory=/usr/local/zookeeper/apache-zookeeper-3.7.0-bin #zookeeper路径ExecStart=/usr/local/zookeeper/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start #zookeeper执⾏⽂件User=rootGroup=rootRestart=alwaysRestartSec=10[Install]WantedBy=multi-user.target注意:zookeeper的路径需要修改成⾃⼰的!重新加载配置信息:systemctl daemon-reload4.2 设置⾃启动systemctl enable zookeeper.service4.3 启动服务systemctl start zookeeper.service4.4 查看启动状态systemctl status zookeeper.service4.5 ⾃启动相关命令重新加载配置信息:systemctl daemon-reload启动zookeeper:systemctl start zookeeper.service关掉zookeeper:systemctl stop zookeeper.service查看进程状态及⽇志:systemctl status zookeeper.service开机⾃启动:systemctl enable zookeeper.service关闭⾃启动:systemctl disable zookeeper.servicecentos6第⼀种:修改vim /etc/rc.local⽂件vim /etc/rc.local加⼊:export JAVA_HOME=/usr/local/jdk/jdk1.8.0_281 -- jdk安装路径/usr/local/zookeeper/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start -- zookeeper安装路径重启后⽣效。
Docker下安装zookeeper(单机集群)启动Docker后,先看⼀下我们有哪些选择。
有官⽅的当然选择官⽅啦~下载:[root@localhost admin]# docker pull zookeeperUsing default tag: latestTrying to pull repository docker.io/library/zookeeper ...latest: Pulling from docker.io/library/zookeeper1ab2bdfe9778: Already exists7aaf9a088d61: Pull complete80a55c9c9fe8: Pull completea0086b0e6eec: Pull complete4165e7457cad: Pull completebcba13bcf3a1: Pull complete41c03a109e47: Pull complete4d5281c6b0d4: Pull completeDigest: sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39edStatus: Downloaded newer image for docker.io/zookeeper:latest查看镜像详情[root@localhost admin]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE192.168.192.128:443/hello-2 latest 0c24558dd388 42 hours ago 660 MB192.168.192.128:443/hello latest a3ba3d430bed 42 hours ago 660 MBdocker.io/nginx latest 5a3221f0137b 13 days ago 126 MBdocker.io/zookeeper latest 3487af26dee9 13 days ago 225 MBdocker.io/registry latest f32a97de94e1 5 months ago 25.8 MBdocker.io/mongo latest 8bf72137439e 12 months ago 380 MBdocker.io/influxdb latest 34de2bdc2d7f 12 months ago 213 MBdocker.io/centos latest 5182e96772bf 12 months ago 200 MBdocker.io/grafana/grafana latest 3e16e05be9a3 13 months ago 245 MBdocker.io/hello-world latest 2cb0d9787c4d 13 months ago 1.85 kBdocker.io/java latest d23bdf5b1b1b 2 years ago 643 MB[root@localhost admin]# docker inspect 3487af26dee9[{"Id": "sha256:3487af26dee9ef9eacee9a97521bc4f0243bef0b285247258c32f4a03cab92c5","RepoTags": ["docker.io/zookeeper:latest"],"RepoDigests": ["docker.io/zookeeper@sha256:175d6bb1471e1e37a48bfa41a9da047c80fade60fd585eae3a0e08a4ce1d39ed"],"Parent": "","Comment": "","Created": "2019-08-15T06:10:50.178554969Z","Container": "9a38467115f1952161d6075135d5c5287967282b834cfe68183339c810f9652b","ContainerConfig": {"Hostname": "9a38467115f1","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"2181/tcp": {},"2888/tcp": {},"3888/tcp": {},"8080/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.5.5-bin/bin","LANG=C.UTF-8","JAVA_HOME=/usr/local/openjdk-8","JAVA_VERSION=8u222","JAVA_BASE_URL=https:///AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_","JAVA_URL_VERSION=8u222b10","ZOO_CONF_DIR=/conf","ZOO_DATA_DIR=/data","ZOO_DATA_LOG_DIR=/datalog","ZOO_LOG_DIR=/logs","ZOO_TICK_TIME=2000","ZOO_INIT_LIMIT=5","ZOO_SYNC_LIMIT=2","ZOO_AUTOPURGE_PURGEINTERVAL=0","ZOO_AUTOPURGE_SNAPRETAINCOUNT=3","ZOO_MAX_CLIENT_CNXNS=60","ZOO_STANDALONE_ENABLED=true","ZOO_ADMINSERVER_ENABLED=true","ZOOCFGDIR=/conf"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"zkServer.sh\" \"start-foreground\"]"],"ArgsEscaped": true,"Image": "sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e","Volumes": {"/data": {},"/datalog": {},"/logs": {}},"WorkingDir": "/apache-zookeeper-3.5.5-bin","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {}},"DockerVersion": "18.06.1-ce","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"2181/tcp": {},"2888/tcp": {},"3888/tcp": {},"8080/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/openjdk-8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.5.5-bin/bin","LANG=C.UTF-8","JAVA_HOME=/usr/local/openjdk-8","JAVA_VERSION=8u222","JAVA_BASE_URL=https:///AdoptOpenJDK/openjdk8-upstream-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jre_","JAVA_URL_VERSION=8u222b10","ZOO_CONF_DIR=/conf","ZOO_DATA_DIR=/data","ZOO_DATA_LOG_DIR=/datalog","ZOO_LOG_DIR=/logs","ZOO_TICK_TIME=2000","ZOO_INIT_LIMIT=5","ZOO_SYNC_LIMIT=2","ZOO_AUTOPURGE_PURGEINTERVAL=0","ZOO_AUTOPURGE_SNAPRETAINCOUNT=3","ZOO_MAX_CLIENT_CNXNS=60","ZOO_STANDALONE_ENABLED=true","ZOO_ADMINSERVER_ENABLED=true","ZOOCFGDIR=/conf"],"Cmd": ["zkServer.sh","start-foreground"],"ArgsEscaped": true,"Image": "sha256:20bf3cc1bd5b5766b79da5265e94007d0802ce241df1636d0f63e211a79a0e3e","Volumes": {"/data": {},"/datalog": {},"/logs": {}},"WorkingDir": "/apache-zookeeper-3.5.5-bin","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": null},"Architecture": "amd64","Os": "linux","Size": 225126346,"VirtualSize": 225126346,"GraphDriver": {"Name": "overlay2","Data": {"LowerDir": "/var/lib/docker/overlay2/92185ebf7638a7b34180cfb87795dd758405cbad4fd0139b92a227d1a4b61847/diff:/var/lib/docker/overlay2/8787e91f5c03a7c03cee072019eca49a0402a0a0902be39ed0b5d651a79cce35/diff:/var/lib/doc "MergedDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/merged","UpperDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/diff","WorkDir": "/var/lib/docker/overlay2/a7fcc1b78c472cde943f20d1d4495f145308507b5fe3da8800c33dc4ce426156/work"}},"RootFS": {"Type": "layers","Layers": ["sha256:1c95c77433e8d7bf0f519c9d8c9ca967e2603f0defbf379130d9a841cca2e28e","sha256:2bf534399acac9c6b09a0b1d931223808000b04400a749f08187ed9ee435738d","sha256:eb25e0278d41b9ac637d8cb2e391457cf44ce8d2bfe0646d0c9faefc96413f91","sha256:e54bd3566d9ef3e1309a5af6caf8682f32c6ac4d6adfcbd3e601cfee4e2e0e85","sha256:c79435051d529a7b86f5f9fc32e7e2ec401929434e5596f02a2af731f55c9f28","sha256:76e0d7b2d700e6d17924b985703c7b5b84fb39ddcc0a1181b41217c2a11dffc4","sha256:eecdc37df6afd77091641588f9639f63b65e8eb141e56529e00da44419c5bd04","sha256:36e788f2d91a89375df5901f31cca33776f887c00ddfd3cf9f2466fa4cb794d6"]}}]默认拉取最新的是3.5.X版本,如果你需要3.4.X版本的,要指定标签单机# 最后那个是镜像的ID[root@localhost admin]# docker run -d -p 2181:2181 --name some-zookeeper --restart always 3487af26dee9d5c6f857cd88c342acf63dd58e838a4cdf912daa6c8c0115091147136e819307[root@localhost admin]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd5c6f857cd88 3487af26dee9 "/docker-entrypoin..." 4 seconds ago Up 3 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp some-zookeeper[root@localhost admin]# docker exec -it d5c6f857cd88 bashroot@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# ./bin/zkCli.shConnecting to localhost:21812019-08-29 07:15:21,623 [myid:] - INFO [main:Environment@109] - Client environment:zookeeper.version=3.5.5-390fe37ea45dee01bf87dc1c042b5e3dcce88653, built on 05/03/2019 12:07 GMT2019-08-29 07:15:21,679 [myid:] - INFO [main:Environment@109] - Client environment:=d5c6f857cd882019-08-29 07:15:21,680 [myid:] - INFO [main:Environment@109] - Client environment:java.version=1.8.0_2222019-08-29 07:15:21,717 [myid:] - INFO [main:Environment@109] - Client environment:java.vendor=Oracle Corporation2019-08-29 07:15:21,718 [myid:] - INFO [main:Environment@109] - Client environment:java.home=/usr/local/openjdk-82019-08-29 07:15:21,725 [myid:] - INFO [main:Environment@109] - Client environment:java.class.path=/apache-zookeeper-3.5.5-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.5.5-bin/bin/../build/classes:/apache-zookeeper-3.5.5 2019-08-29 07:15:22,108 [myid:] - INFO [main:Environment@109] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:java.io.tmpdir=/tmp2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:piler=<NA>2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:=Linux2019-08-29 07:15:22,109 [myid:] - INFO [main:Environment@109] - Client environment:os.arch=amd642019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:os.version=3.10.0-862.9.1.el7.x86_642019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:=root2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:user.home=/root2019-08-29 07:15:22,110 [myid:] - INFO [main:Environment@109] - Client environment:user.dir=/apache-zookeeper-3.5.5-bin2019-08-29 07:15:22,118 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.free=11MB2019-08-29 07:15:22,148 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.max=247MB2019-08-29 07:15:22,148 [myid:] - INFO [main:Environment@109] - Client environment:os.memory.total=15MB2019-08-29 07:15:22,206 [myid:] - INFO [main:ZooKeeper@868] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3b95a09c2019-08-29 07:15:22,239 [myid:] - INFO [main:X509Util@79] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation2019-08-29 07:15:22,285 [myid:] - INFO [main:ClientCnxnSocket@237] - jute.maxbuffer value is 4194304 Bytes2019-08-29 07:15:22,366 [myid:] - INFO [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=Welcome to ZooKeeper!JLine support is enabled2019-08-29 07:15:22,563 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unkno 2019-08-29 07:15:23,443 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /0:0:0:0:0:0:0:1:37198, server: localhost/0:0:0:0:0:0:0:1:2181 2019-08-29 07:15:23,520 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x10001216d990000, negotiated WATCHER::WatchedEvent state:SyncConnected type:None path:null[zk: localhost:2181(CONNECTED) 0] ls /[zookeeper][zk: localhost:2181(CONNECTED) 1] quitWATCHER::WatchedEvent state:Closed type:None path:null2019-08-29 07:15:37,042 [myid:] - INFO [main:ZooKeeper@1422] - Session: 0x10001216d990000 closed2019-08-29 07:15:37,043 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x10001216d990000root@d5c6f857cd88:/apache-zookeeper-3.5.5-bin# exitexit[root@localhost admin]#在外部访问(192.168.192.128:2181)集群环境:单台宿主机(192.168.192.128),启动三个zookeeper容器。
ZooKeeper集群安装后⽆法启动ZooKeeperJMXenabledbydefaultZooKeeper做三节点集群,启动后报错如下:[root@storm1 conf]# zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /my/servers/zookeeper-3.4.10/bin/../conf/zoo.cfgStarting zookeeper ... STARTED[root@storm1 conf]# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /my/servers/zookeeper-3.4.10/bin/../conf/zoo.cfgError contacting service. It is probably not running.于是开始⽹上查找解决⽅案:⼀、关闭防⽕墙servcie iptables stop --临时关闭防⽕墙chkconfig iptables off --永久关闭防⽕墙⼆、配置问题zookeeper_home/conf/zoo.cfg配置⽂件⾥dataDir指定的那个⽬录下创建myid⽂件。
并且指定id,改id为你zoo.cfg⽂件中server.1=ip:2888:3888中的1.只要在myid头部写⼊1即可.同理其它两台机器的id对应上。
⽐如第⼀台机器cfg⽂件:配置相应的myid为:1三、⽤户权限问题切换为root⽤户启动尝试了以上⽅法,仍然不能解决。
看到某篇博客下评论说:zookeeper_home/conf/zoo.cfg配置⽂件⾥dataDir指定的⽂件夹没权限导致,于是使⽤chmod -R 777 data。
然后就可以成功启动了~。
利用Linux操作系统进行服务器集群管理在当今信息时代,服务器集群已经成为现代企业中不可或缺的一部分。
而要有效地管理服务器集群,利用Linux操作系统是一个明智的选择。
本文将介绍如何利用Linux操作系统进行服务器集群管理。
一、服务器集群管理的基本概念服务器集群是由多台服务器组成的,旨在提高系统的可靠性、可用性和性能。
服务器集群管理的核心目标是促进集群中服务器的协同工作以提供高负载、高性能和高可用性的服务。
二、Linux操作系统简介Linux操作系统是一个免费且开源的操作系统,具有出色的稳定性和安全性,广泛应用于服务器领域。
Linux操作系统提供了一系列工具和命令,用于管理集群中的多台服务器。
三、服务器集群管理工具1. SSH(Secure Shell)SSH是一种网络协议,可用于在两个网络设备之间进行加密通信。
通过SSH,管理员可以在远程终端登录服务器,执行管理操作。
2. Shell脚本Shell脚本是一种在Linux操作系统中编写的可执行脚本,用于批量执行一系列命令。
管理员可以编写Shell脚本来进行服务器集群管理任务,如自动化安装软件、配置系统参数等。
3. rsyncrsync是一种高效的文件复制工具,可用于在服务器之间同步文件和目录。
管理员可以使用rsync命令将文件从一台服务器复制到集群中的其他服务器,实现数据的同步和备份。
4. PacemakerPacemaker是一个开源的高可用性集群管理软件,可用于监控和管理服务器集群中的资源。
通过配置Pacemaker,管理员可以实现自动故障切换和负载均衡等功能。
四、利用Linux操作系统进行服务器集群管理的步骤1. 安装Linux操作系统首先,管理员需要在每台服务器上安装Linux操作系统。
可以选择适合企业需求的Linux发行版,如Ubuntu、CentOS等。
2. 配置SSH登录在每台服务器上,管理员需要配置SSH服务,以便能够通过SSH 协议远程登录服务器。
Zookeeper异常org.apache.zookeeper.KeeperExcepti。
在虚拟机上安装了CenOS Linux系统,然后配置好了 zookeeper的集群环境,在本地写了⼀个Zookeeper测试程序,如下:package com.xbq.zookeeper;import java.io.IOException;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs;import org.apache.zookeeper.ZooKeeper;/*** @ClassName: ZookeeperDemo* @Description: TODO zookeeper测试* @author xbq* @version 1.0* @date 2017-3-10 下午5:05:16*/public class ZookeeperDemo {private static final int SESSION_TIMEOUT = 3000;public static void main(String[] args) {try {ZooKeeper zooKeeper = new ZooKeeper("192.168.242.128:2183", SESSION_TIMEOUT, new Watcher() {@Overridepublic void process(WatchedEvent event) {System.out.println("触发事件:" + event.getType());}});zooKeeper.create("/node_xbq", "coder".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println(new String(zooKeeper.getData("/node_xbq", true, null)));} catch (Exception e) {e.printStackTrace();}}}执⾏之后,出现如下错误:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /node_xbqat org.apache.zookeeper.KeeperException.create(KeeperException.java:99)at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1412)at com.xbq.zookeeper.ZookeeperDemo.main(ZookeeperDemo.java:32)解决⽅法: 关闭Linux的防⽕墙。
Linux系统下Hadoop运⾏环境搭建1.安装ssh免密登录命令:ssh-keygenoverwrite(覆盖写⼊)输⼊y⼀路回车将⽣成的密钥发送到本机地址ssh-copy-id localhost(若报错命令⽆法找到则需要安装openssh-clients)yum –y install openssh-clients测试免密设置是否成功ssh localhost2.卸载已有java确定JDK版本rpm –qa | grep jdkrpm –qa | grep gcj切换到root⽤户,根据结果卸载javayum -y remove java-1.8.0-openjdk-headless.x86_64 yum -y remove java-1.7.0-openjdk-headless.x86_64卸载后输⼊java –version查看3.安装java切换回hadoop⽤户,命令:su hadoop查看下当前⽬标⽂件,命令:ls新建⼀个app⽂件夹,命令:mkdir app将桌⾯的hadoop⽂件夹中的java及hadoop安装包移动到app⽂件夹中命令:mv /home/hadoop/Desktop/hadoop/jdk-8u141-linux-x64.gz /home/hadoop/app mv /home/hadoop/Desktop/hadoop/hadoop-2.7.0.tar.gz /home/hadoop/app解压java程序包,命令:tar –zxvf jdk-7u79-linux-x64.tar.gz创建软连接ln –s jdk1.8.0_141 jdk配置jdk环境变量切换到root⽤户再输⼊vi /etc/profile输⼊export JAVA_HOME=/home/hadoop/app/jdk1.8.0_141export JAVA_JRE=JAVA_HOME/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_JRE/libexport PATH=$PATH:$JAVA_HOME/bin保存退出,并使/etc/profile⽂件⽣效source /etc/profile能查询jdk版本号,说明jdk安装成功java -version4.安装hadoop切换回hadoop⽤户,解压缩hadoop-2.6.0.tar.gz安装包创建软连接,命令:ln -s hadoop-2.7.0 hadoop验证单机模式的Hadoop是否安装成功,命令:hadoop/bin/hadoop version此时可以查看到Hadoop安装版本为Hadoop2.7.0,说明单机版安装成功。
linux下的zookeeper启动zookeeper的安装⽬录:/usr/local/zookeeper-3.4.6/bin/zkServer.sh;配置⽂件路径:../conf/zoo.cfg端⼝:2181;ZooKeeper服务命令:在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进⾏服务的相关操作1. 启动ZK服务: sh bin/zkServer.sh start2. 查看ZK服务状态: sh bin/zkServer.sh status3. 停⽌ZK服务: sh bin/zkServer.sh stop4. 重启ZK服务: sh bin/zkServer.sh restartzk客户端命令ZooKeeper命令⾏⼯具类似于的shell环境,不过功能肯定不及shell啦,但是使⽤它我们可以简单的对ZooKeeper进⾏访问,数据创建,数据修改等操作. 使⽤ zkCli.sh -server 127.0.0.1:2181 连接到 ZooKeeper 服务,连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。
命令⾏⼯具的⼀些简单操作如下:1. 显⽰根⽬录下、⽂件: ls / 使⽤ ls 命令来查看当前 ZooKeeper 中所包含的内容2. 显⽰根⽬录下、⽂件: ls2 / 查看当前节点数据并能看到更新次数等数据3. 创建⽂件,并设置初始内容: create /zk "test" 创建⼀个新的 znode节点“ zk ”以及与它关联的字符串4. 获取⽂件内容: get /zk 确认 znode 是否包含我们所创建的字符串5. 修改⽂件内容: set /zk "zkbak" 对 zk 所关联的字符串进⾏设置6. 删除⽂件: delete /zk 将刚才创建的 znode 删除7. 退出客户端: quit8. 帮助命令: helpZooKeeper 常⽤四字命令:ZooKeeper ⽀持某些特定的四字命令字母与其的交互。
1.概述
操作系统为3台ubuntu虚拟机,其ip地址分别为
ubuntu1 192.168.1.109
ubuntu2 192.168.1.108
ubuntu3 192.168.1.110
jdk版本为jdk7
2.下载解压(三台机器都执行一遍)
2.1将zookeeper解压到/usr/local/zookeeper-
3.
4.5目录下
2.2以下命令都是在/usr/local/zookeeper-
3.
4.5目录下执行的
#从zookeeper的sample中复制一个zk的配置文件
root@ubuntu-2:/usr/local/zookeeper-3.4.5# cp conf/zoo_sample.cfg conf/zoo.cfg #修改一下这个配置文件,让他支持集群
root@ubuntu-2:/usr/local/zookeeper-3.4.5# vi conf/zoo.cfg
#修改一下存储数据的目录,给出的模板里放在/tmp/zookeeper(如果
/var/lib/zookeeper目录不存在则需要自行创建)
dataDir=/var/lib/zookeeper/
#在这个文件的末尾添加如下配置(遵循server.id=host:port:port的格式):
server.1=192.168.1.109:2888:3888
server.2=192.168.1.108:2888:3888
server.3=192.168.1.110:2888:3888
保存配置退出vi编辑器
2.3切换到/var/lib/zookeeper目录下(这个目录即上面的zoo.cfg中配置的dataDir目录)新建一个myid的文本文件,编辑其内容如下
在server.1=192.168.1.109这台机器上设置1
在server.2=192.168.1.108这台机器上设置2
在server.3=192.168.1.110这台机器上设置3
设置的规则就是在zoo.conf文件指定的server.id,zookeeper用这个数字来标识集群中的哪一个节点
3.启动
切换到zookeeper安装目录的bin下
root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin# sh ./zkServer.sh start
4.集群验证
在三台机器上分别使用zkServer.sh status命令查看当前服务状态
server3输出:
root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
root@ubuntu-3:/usr/local/zookeeper-3.4.5/bin#
server2输出:
root@ubuntu-2:/usr/local/zookeeper-3.4.5/bin# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
root@ubuntu-2:/usr/local/zookeeper-3.4.5/bin#
server1输出:
root@ubuntu-1:/usr/local/zookeeper-3.4.5/bin# sh ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
root@ubuntu-1:/usr/local/zookeeper-3.4.5/bin#
注意:实际的输出结果leader和follower可能会分步的节点不同,但是只会有一个leader,另外两个节点是folower。