文章目录
- 项目名称:基于keepalived的双vip高可用web集群
- 架构图
- 项目环境:CentOS 8.2(8台 1核1G),ansible 2.9.17,keepalived 2.0.10,Nginx 1.19.7,NFS
- 项目描述:
- 项目步骤:
-
- 1.安装好8台CentOS 8.2的系统,部署好ansible服务器,在所有的机器之间配置ssh免密通道;
- 2.部署好堡垒机,配置firewall服务器的NAT策略,用于发布内网NFS服务器的ssh服务;
- 3.编写好部署Nginx和keepalived的脚本,编写ansible的playbook实现批量部署;
- 4.部署好后端的3台web服务器,其中1台搭载NFS服务,实现访问相同内容的功能;
- 5.模拟中台系统,通过对2台负载均衡器 Nginx配置文件的修改,实现基于url的负载均衡,并实现对不同的url进行转发,例如/download 实现下载功能;
- 6.对负载均衡器进行配置,实现基于keepalived双vip的高可用性,让MASTER和BACKUP资源充分利用,不闲置;
- 7.优化Linux和Nginx的相关参数,达到自定义目的:如文件描述符,并发连接数,状态统计功能,流量限速等;
- 项目心得:
个人博客
https://blog.csdn.net/cPen_web
项目名称:基于keepalived的双vip高可用web集群
架构图
项目环境:CentOS 8.2(8台 1核1G),ansible 2.9.17,keepalived 2.0.10,Nginx 1.19.7,NFS
项目描述:
构建一个高并发,高可用性的web集群项目,融入ansible实现自动化运维,使用Nginx做负载均衡器,keepalived实现高可用。ansible服务器(1台)、firewall服务器(1台)、堡垒机(1台)、负载均衡器(2台)、web服务器(3台,其中1台是NFS+web服务器);
项目步骤:
1.安装好8台CentOS 8.2的系统,部署好ansible服务器,在所有的机器之间配置ssh免密通道;
# ansible服务器
[root@ansible ~]# ssh-keygen -t ecdsa #注:生成密钥对
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.110 #注:firewall
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.130 #注:堡垒机
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.141 #注:load_balancer-1
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.142 #注:load_balancer-2
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.151 #注:web-1
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.152 #注:web-2
[root@ansible ~]# ssh-copy-id -i ~/.ssh/id_ecdsa.pub 192.168.1.153 #注:web-3
2.部署好堡垒机,配置firewall服务器的NAT策略,用于发布内网NFS服务器的ssh服务;
# 配置firewall服务器的NAT策略为了发布内网的ssh服务器(即web-1服务器)
[root@firewall ~]# cat iptables_open_ssh-server.sh
#!/bin/bash
#停止firewalld服务
service firewalld stop
#清除下iptables里的规则
iptables -t nat -F
iptables -F
#disabled selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/sysconfig/selinux
#开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#配置SNAT策略,实现snat功能,将所有内网是192.168.1.0/24这个网段的ip包的源ip修改为192.168.1.110
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to-source 192.168.1.110
#配置DNAT策略,发布内网的ssh服务器192.168.1.151(即web-1服务器),访问firewall服务器的2233端口转发到内网的192.158.1.151的22号端口
iptables -t nat -A PREROUTING -d 192.168.1.110 -p tcp --dport 2233 -i ens33 -j DNAT --to-destination 192.168.1.151:22
[root@firewall ~]# bash iptables_open_ssh-server.sh
效果:192.168.1.110:2233 ssh可以连到web1 192.168.1.151:22
效果图
3.编写好部署Nginx和keepalived的脚本,编写ansible的playbook实现批量部署;
# ansible服务器
[root@ansible ~]# yum install epel-release -y
[root@ansible ~]# yum install ansible -y
[root@ansible ~]# cat /etc/ansible/hosts
[nginx-servers]
192.168.1.141
192.168.1.142
192.168.1.151
192.168.1.152
192.168.1.153
[keepalived-servers]
192.168.1.141
192.168.1.142
[root@ansible ~]# cat ansible_playbook.yaml
- hosts: nginx-servers
remote_user: root
tasks:
- name: deploy server-web
script: ~/onekey_install_nginx.sh
- hosts: keepalived-servers
remote_user: root
tasks:
- name: deploy server-lb
script: ~/onekey_install_keepalived.sh
[root@ansible ~]# ansible-playbook ansible_playbook.yaml
效果图