概述
大数据平台,一听就很高大上的名词,根据网上教程照葫芦画瓢,一步一个坑,搞一个简单的 dubbo + zookeeper分布式集群。
创建虚拟机
创建虚拟机利用VM创建虚拟机,选择自定义然后基本是一路默认选项(期间选择稍后安装系统并选择CentOS-64位),网络模式可选择桥接或NAT模式,我选择的是桥接网络,最后加载自己的映像Linux系统CentOS-7,启动安装即可,主要就是root用户的密码设置。
网络配置
等待安装完成,进入后进行网络配置
- 修改网络配置文件ifcfg-ens33,添加配置信息IPADDR、NETMASK、GATEWAY、BOOTPROTO、ONBOOT以及DNS:
[root@Test test]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" #静态路由 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" #UUID="xxxx-xx-xx-xx-xxxx" DEVICE="ens33" ONBOOT="yes" #重启激活 IPADDR=192.168.1.x #IP地址 NETMASK=255.255.255.0 #子网掩码 GATEWAY=192.168.1.1 #网关 DNS1=211.138.180.3 #DNS DNS2=114.114.114.114
- 在etc/resolve.conf 中添加对应的DNS:
[root@Test test]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
#Created by anaconda nameserver 114.114.114.114 nameserver 8.8.8.8
- 重启网络
service network restart
- 查看网络是否正常,可以ping百度表示网络没有问题
ping www.baidu.com
单节点Dubbo的安装部署
Dubbo的安装部署前提是: jdk 、zookeeper、tomcat。连接Xshell传输在官网下载的安装包(jdk、zookeeper和tomcat都是tar.gz)或者可以直接用yum安装。
1. 安装配置jdk
我选择的是jdk1.8.0_261,如果自己选择的话需要注意版本的兼容性,如果是jdk1.8则tomcat最好选择8以上版本才不会出现兼容问题,我选择的是tomcat-8.5.57。
- 在 Xshell 中上传压缩包到虚拟机中,rz -E时提示rz not command,yum安装lrzsz即可
- 安装 rzsz 之后,rz -E上传对应的 jdk 和 tomcat 的tar.gz压缩包
- 上传到自己指定的目录下(该路径在后面配置环境变量时很重要)
- 然后在安装目录直接解压文件
[root@Test test]# tar zxvf jdk-8u261-linux-x64.tar.gz
(Ps:如果觉得名字太长,可以用 mv 文件名 新文件名 的方法进行修改(环境变量也需要对应修改)) - 在/etc/profile文件中配置java的环境变量
[root@Test test]# vi /etc/profile
#set jdk environment export JAVA_HOME=/root/dubbo/jdk1.8.0_261 export PATH=.:$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- 环境变量配置生效,并查看安装是否成功
[root@Test test]# source /etc/profile
2. 安装zookeeper
- 上传安装包zookeeper-3.4.12.tar.gz到相同目录,然后解压
- 进入zookeeper的conf/目录下,将zoo_sample.cfg文件修改为zoo.cfg,修改zoo.cfg中的dataDir存储路径为自定义的data目录
[root@Test conf]# mv zoo_sample.cfg zoo.cfg
[root@Test conf]# vi zoo.cfg
- 然后进入bin目录下启动zookeeper
[root@Test bin]# ./zkServer.sh start
查询zookeeper的状态
[root@Test bin]# ./zkServer.sh status
- 需要将2181端口加入到防火墙的安全组中,或者可以将防火墙关闭之后重启zookeeper
[root@Test bin]# firewall-cmd --zone=public --add-port=2181/tcp --permanent
重新加载防火墙规则并查看是否已经加入2181端口
[root@host-192-168-4-90 bin]# firewall-cmd --reload
root@host-192-168-4-90 bin]# firewall-cmd --list-all
暂时关闭/禁用虚拟机的防火墙public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client ports: 2181/tcp #新添加的端口 protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
[root@Test bin]# systemctl stop/disable firewalld
3. 安装tomcat
- 上传压缩包并解压
[root@Test test]# tar zxvf apache-tomcat-8.5.57.tar.gz
- 进入tomcat的bin目录下,启动tomcat
[root@Test bin]# ./startup.sh start
- 启动之后还是无法在网页通过IP:8080访问tomcat主页,因为防火墙没有添加安全组端口8080(这是tomcat默认端口号,可以在conf/目录下的server.xml文件中修改Connector Port),添加安全组端口8080后需要reload防火墙规则,然后便可以通过8080访问
[root@Test bin]# firewall-cmd --add-port=8080/tcp --permanent
4. 安装部署Dubbo
- 官网下载安装包dubbo-admin.war,然后上传到tomcat的webapps/ROOT下目录,然后利用unzip解压war包,选择y或者是A将ROOT目录下的文件覆盖
[root@Test bin]# unzip dubbo-admin-2.5.4.war
(Ps:其中也是有版本兼容问题的,所以选择时最好了解清楚,我选择的dubbo-admin-2.5.4和jdk1.8、tomcat-8是没有兼容问题的) - 进入解压路径(webapps/ROOT/WEB-INF)下,修改dubbo.properties文件,ip是注册中心的ip即zookeeper所在主机的ip,而后面两个是root和guest用户登录的密码
[root@Test bin]# vi dubbo.properties
Ps:ip原来是127.0.0.1,如果dubbo-admin管控台和zookeeper不在同一台主机上,需要设为zookeeper所在的主机ip;否则默认127.0.0.1不改也可以。dubbo.registry.address=zookeeper://192.168.1.x:2181 #自己主机ip dubbo.admin.root.password=root dubbo.admin.guest.password=guest
- 在启动zookeeper和tomcat之后可以用8080端口访问dubbo-admin的网页管理控制台,IP:8080/ 可以直接访问到dubbo管控台,可以root或guest登录。
(ps:①要先启动zookeeper再启动tomcat;②防火墙如果不关闭,就要添加相应的安全组端口,否则无法访问)
至此,上述单机节点上部署dubbo已经完成,环境部署是jdk1.8.0_261、zookeeper-3.4.12和tomcat-8.5.57以及dubbo-admin-2.5.4。过程总结来说是:①jdk——解压、环境变量的配置、配置生效;②zookeeper——解压、更改zoo.cfg配置信息dataDir、添加防火墙安全组端口、启动服务;③tomcat——解压、添加防火墙安全组端口、启动服务;④dubbo——解压到tomcat的/webapps/ROOT/目录下、修改dubbo属性配置文件、访问。
5. 开机自启动
按上述步骤我们实现了dubbo的部署,但是每次开机或重启需要重新进入zookeeper和tomcat的bin目录启动服务很繁琐,所以可以设置zookeeper和tomcat的开机自启动服务。
- Zookeeper的开机自启动
①方法一:在 /etc/rc.local中添加下面两行,然后对该文件的读写运行权限设为最高
[root@Test ~]# vi /etc/rc.local
[root@Test ~]# chmod 777 /etc/rc.d/rc.local
②方法二:利用服务脚本的方式export JAVA_HOME=/root/test/jdk1.8.0_261 /root/test/zookeeper-3.4.12/bin/zkServer.sh start
(1)进入/etc/init.d目录下,创建zookeeper并添加脚本,编辑zookeeper脚本,保存退出即可
[root@Test init.d]# vi zookeeper
(2)保存脚本后,利用chkconfig将其注册为服务#!/bin/bash #chkconfig:2345 20 90 #description:zookeeper #processname:zookeeper ZK_PATH = /root/test/zookeeper-3.4.12 #自己的jdk和zk安装路径 export JAVA_HOME=/root/test/jdk1.8.0_261 case $1 in start) su $ZK_PATH/bin/zkServer.sh start;; stop) su $ZK_PATH/bin/zkServer.sh stop;; status) su $ZK_PATH/bin/zkServer.sh status;; restart) su $ZK_PATH/bin/zkServer.sh restart;; *) echo "require start|stop|status|restart" ;; esac
[root@Test init.d]# chkconfig --add zookeeper
(3)可以利用service zookeeper start来测试是否已经注册为服务,如果提示权限不足,修改zookeeper的权限即可
[root@Test init.d]# service zookeeper start
[root@Test init.d]# chmod +x zookeeper
[root@Test init.d]# service zookeeper status
(4)也可以用 ps -ef|grep zookeeper 检查zk服务启动情况 - Tomcat的开机自启动
(1)修改tomcat的catalina.sh文件,在tomcat的bin目录下修改catalina文件增加一行
[root@Test bin]# vi catalina.sh
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
(2)在/usr/lib/systemd/system/目录下添加tomcat.service文件(也是脚本)
[root@Test init.d]# vi /usr/lib/systemd/system/tomcat.service
(3)重新加载配置文件,配置生效[Unit] Description=Tomcat After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking Environment="JAVA_HOME=/root/test/jdk1.8.0_261" #自己的jdk安装路径 PIDFile=/root/test/apache-tomcat-8.5.57/tomcat.pid ExecStart=/root/test/apache-tomcat-8.5.57/bin/startup.sh ExecStop=/bin/kill -s QUIT $MAINPID ExecReload=/bin/kill -s HUP $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
[root@Test init.d]# systemctl daemon-reload
(4)启动和查看状态的测试,并将其添加到自启动中
[root@Test bin]# systemctl start tomcat.service
[root@Test bin]# systemctl status tomcat.service
(状态是running就是开启)
[root@Test bin]# systemctl enable tomcat.service
Dubbo+zookeeper集群的部署
前面我们在单机节点上部署了jdk、zookeeper、tomcat和dubbo,如何部署zookeeper集群并且实现依旧能访问dubbo-admin管控台,这里我们采用三台虚拟机作为zookeeper集群部署的节点。
1. 安装jdk
每台虚拟机节点上安装配置jdk,同单节点dubbo集群部署的过程。重复部署太繁琐,可以将某一台配置好的jdk文件发送到另外两个虚拟机上。即利用命令[root@Test bin]# scp -r 要发送的文件路径+文件名 root@目标主机IP:要保存到的路径
比如,将jdk从本机发送到192.168.1.110主机的root/java文件目录下,该java目录必须是已经存在的。
[root@Test test]# scp -r jdk1.8.0_261 root@192.168.1.110:/root/java
2. 安装部署zookeeper集群
每个节点的安装部署zookeeper的过程和单节点是一样的。不同的地方在于配置文件的信息需要添加另外两个节点的相关信息。我们选取其中一个机器的部署说明。
- 首先对zookeeper的conf/目录下zoo.cfg的修改,除了dataDir路径的修改,需要添加如下三行表示三个节点的ip信息
server.myid=IP:2888:3888
其中server.myid,这个myid是每个节点的标识,2888是这个服务器与集群中的 Leader 服务器交换信息的端口;3888是选举端口,即万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是在伪分布集群中,因为ip都是一样的,则两个通信端口和选举端口必须是不同的,即不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。每个节点机器都配置该zoo.cfg文件很繁琐,因为信息都是一样的,可以直接使用scp命令传输该文件即可。 - 在对应的zoo.cfg配置的dataDir目录下创建myid文件,其中存放的就是server.id中的id标识,比如server.1就在dataDir目录下创建的myid中放入数字“1”即可。
[root@Test data]# vi myid
(myid中放入数字“1”)
如server.1的myid文件中,用命令cat查看如下:
- 启动zookeeper集群在每个机器上启动zookeeper即可
[root@Test bin]./zkServer.sh start
再查询service zookeeper status时会给出当前节点在集群中的角色,如下结果
[root@Test test]# service zookeeper status
(该命令在开机自启动设置后可使用)
如此表示该zookeeper集群是正常启动的,其中集群中只有一个leader节点,其他都是follower节点,如果超过一半节点宕机则集群无法启动,leader崩溃会自动选出下一个leader节点。 - 停止zookeeper集群在每台机器上停止zookeeper即可
./zkServer.sh stop
至此,一台机器上的zookeeper集群配置信息就搞定了,接下来就是其他的节点了,重复过程很繁琐,所以可以将上述的zoo.cfg和myid文件直接发送到其他节点的相应位置即可,只要修改myid中的数字标识即可。
3. 安装tomcat
在主节点(随便选取一个节点即可)上安装tomcat,同单节点的安装。
4. 安装dubbo
在安装tomcat的节点上安装dubbo,过程同单节点的安装,只是在修改配置文件dubbo.properties时,注册中心的地址写当前主机的ip后面可以接备份节点的ip。
如此同上,可以通过http://主节点ip:8080/dubbo-admin
访问 dubbo-admin 的管控台页面。
克隆虚拟机
不可能每个虚拟机都从头开始新建,我们可以通过克隆虚拟机,可以保留安装的内容和环境变量的配置,从而减少冗余操作。
- 克隆虚拟机
在需要克隆的虚拟机(其实也算是一种备份)关闭,直接克隆完整文件即可。我们可以在一台虚拟机安装好 jdk 和 zookeeper 的基础上,再进行克隆,如此可以减少冗余操作,某种程度上就是将被克隆的虚拟机作为备份。 - 修改ip和主机名称
在克隆的虚拟机中存在一个问题就是ip、主机名和原虚拟机ip、主机名是一样的,所以我们需要修改其ip地址和主机名称。
(1)修改 /etc/sysconfig/network-scripts/ifcfg-ens33 中的配置文件
[root@Test test]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
其中IPADDR是当前虚拟机的修改后ip,UUID是Mac地址,可注释、删除或是用uuidgen命令随机生成一个使用。NAME="ens33" #UUID="xxxx-xxx-xxx-xxx-xxxxx" #注释掉 DEVICE="ens33" ONBOOT="yes" IPADDR=192.168.1.x #修改后的ip NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=211.138.180.3 DNS2=114.114.114.114
(2)修改主机名,并在/etc/hosts文件中加入该主机ip与名称的映射关系,在/network文件中加入如下信息
[root@Test test]# hostname Test02
[root@Test test]# vi /etc/hosts
192.168.1.x Test02 # ip 主机名
[root@Test test]# vi /etc/sysconfig/network
(3)重启网络之后hostname可查看到名称改变#Created by anaconda NETWORKING=yes HOSTNAME=your_name #修改后的hostname
[root@Test test]# service network restart
[root@Test test]# hostname
最后
以上就是内向狗为你收集整理的CentOS7安装部署Dubbo+Zookeeper集群创建虚拟机网络配置单节点Dubbo的安装部署Dubbo+zookeeper集群的部署克隆虚拟机的全部内容,希望文章能够帮你解决CentOS7安装部署Dubbo+Zookeeper集群创建虚拟机网络配置单节点Dubbo的安装部署Dubbo+zookeeper集群的部署克隆虚拟机所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复