文章目录
一、理论知识
1、集群选举原理
1、节点状态和角色:
- Leader(领导者)
- 负责状态管理:Leader负责管理整个集群的状态,包括配置更新、服务注册和发现等。
- 处理客户端请求:所有的客户端写请求必须经过Leader处理,Leader会负责将这些请求复制到其他节点,确保数据一致性。
- 心跳检测:Leader定期发送心跳信号给Follower,以确认集群中所有节点的状态。
- 日志复制:Leader将接收到的客户端写请求复制到其他节点(Follower)上,确保数据的持久化和一致性。
- Follower(跟随者):
- 接收日志条目:Follower从Leader接收复制的日志条目,保持自己的数据与Leader一致。
- 响应客户端读请求:Follower可以响应客户端的读请求,但是写请求必须转发给Leader处理。
- 参与选举:Follower可以成为Candidate参与选举过程,以便在Leader失效时选举出新的Leader。
- Candidate(候选者):
- 发起选举:当一个节点认为当前的Leader失效时,它会变成Candidate,并向其他节点发起选举请求。
- 获得选票:候选者需要集群中过半数节点的投票才能成为新的Leader。
- 参与心跳检测:在选举期间,Candidate也会参与心跳检测,以确保集群中没有活跃的Leader。
2、Leader选举机制:
在初始启动或者发生Leader节点故障时,集群需要选举一个新的Leader。候选者节点通过投票来决定新的Leader。
3、投票机制:
候选者向其他节点发送选举请求,其他节点如果同意,则将自己的投票给候选者。候选者需要获得集群中过半数节点的投票才能成为新的Leader。
4、数据同步机制:
Nacos采用Raft算法作为其核心的一致性协议,确保在分布式环境下各个节点之间的数据强一致性。Raft算法通过选举Leader节点来处理数据更新请求,并同步到Follower节点,从而实现集群节点间的数据同步。
2、高可用集群架构图
- Nacos集群连接一套MySQL数据库
- 通过Nginx二级代理Nacos集群
- 微服务程序连接Nacos可写为NginxIP/nacos,nginx会负载到三台Nacos集群中,当然如果程序支持连接Nacos集群,可直接配置连接Nacos集群,就不过一层Nginx了。
3、环境信息
1、服务器信息:
序号 | IP地址 | 安装服务 |
---|---|---|
1 | 16.32.15.200 | Nacos、Docker、docker-compose |
2 | 16.32.15.201 | Nacos、Docker、docker-compose |
3 | 16.32.15.115 | Nacos、Docker、docker-compose、MySQL、Nginx |
2、中间件版本信息:
序号 | 中间件名称 | 版本 |
---|---|---|
1 | Nacos | v2.3.2 |
2 | MySQL | 8.0.38 |
3 | Nginx | 1.20.1 |
4 | Docker | 26.1.4 |
二、实现步骤
1、部署Docker环境
1、前提环境准备
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2、配置阿里云Yum源
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装Docker
yum install docker-ce docker-ce-cli containerd.io -y
4、配置国内镜像加速地址
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"]
}
EOF
5、启动并加入自启动
systemctl start docker
systemctl enable docker
6、查看版本
docker --version
2、部署docker-compose环境
1、下载docker-compose(官方的,下载较慢)
curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、赋予执行权限
chmod +x /usr/local/bin/docker-compose
3、查看版本
docker-compose --version