一、了解Dubbo
理解dubbo架构:
- zk为有状态服务,所以适合放在集群外部
二、架构部署
实验环境:
三台master,两台worker
[root@master01 ~]# kubectl get nodes -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master01 Ready master 20h v1.18.20 10.4.7.11 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.7
master02 Ready master 20h v1.18.20 10.4.7.12 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.7
master03 Ready master 20h v1.18.20 10.4.7.13 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.7
worker01 Ready <none> 20h v1.18.20 10.4.7.14 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.7
worker02 Ready <none> 20h v1.18.20 10.4.7.15 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://20.10.7
1. 部署zk集群
zk部署在三台master上
1、 创建安装目录
[root@master01 ~]# ansible all -m shell -a "mkdir -p /opt/src"
[root@master01 ~]# ansible all -m shell -a "mkdir -p /usr/java"
2、下载安装jdk
地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
[root@master01 ~]# ansible all -m copy -a "src=jdk-8u291-linux-x64.tar.gz dest=jdk-8u291-linux-x64.tar.gz"
[root@master01 ~]# ansible all -m shell -a "tar xf jdk-8u291-linux-x64.tar.gz -C /usr/java"
[root@master01 ~]# ansible all -m shell -a "ln -s /usr/java/jdk1.8.0_291/ /usr/java/jdk"
3、添加环境变量
[root@master01 ~]# vi /etc/profile
#JAVA HOME
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
[root@master01 ~]# source /etc/profile
查看java版本
[root@master01 ~]# 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)
4、下载zookpeer
地址:https://archive.apache.org/dist/zookeeper/
ansible master -m copy -a "src=zookeeper-3.4.14.tar.gz dest=~/zookeeper-3.4.14.tar.gz"
[root@master01 ~]# tar zxvf zookeeper-3.4.14.tar.gz -C /opt
[root@master01 ~]# ln -s /opt/zookeeper-3.4.14/ /opt/zookeeper
5、创建日志目录和数据存放目录
mkdir -pv /data/zookeeper/data /data/zookeeper/logs
6、创建zk的配置文件
[root@master03 ~]# vi /opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=zk1.prod.com:2888:3888 # 这里使用的是dns解析后的域名,也可以用ip地址
server.2=zk2.prod.com:2888:3888
server.3=zk3.prod.com:2888:3888
配置dns
$ORIGIN prod.com.
$TTL 600 ; 10 minutes
@ IN SOA dns.prod.com. dnsadmin.host.com. (
2019111001 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS dns.prod.com.
$TTL 60 ; 1 minute
harbor A 10.4.7.11
nginx A 10.4.7.253
dns A 10.4.7.11
zk1 A 10.4.7.11
zk2 A 10.4.7.12
zk3 A 10.4.7.13
7、配置zk集群的myid文件(每个节点id不能一样)
# 在master01上
[root@master01 ~]# echo 1 > /data/zookeeper/data/myid
# 在master02上
[root@master02 ~]# echo 2 > /data/zookeeper/data/myid
# 在master03上
[root@master03 ~]# echo 3 > /data/zookeeper/data/myid
8、启动zookeeper
[root@master01 ~]# /opt/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# 查看zookper进程(默认监听2181端口ÿ