共计 3409 个字符,预计需要花费 9 分钟才能阅读完成。
要求:
1、使用 nginx 的反向代理功能实现负载均衡
2、keepalived 实现高可用
第一组的虚拟地址为 172.16.1.100
D 设备的优先级高
第二组的虚拟地址为 172.16.1.110
E 设备的优先级高
3、分别实现主 / 从和主 / 主两种配置
集群拓扑:
第一种:主 / 从配置
所有配置之前先在各个主机上进行时间同步
ntpdate 时间服务器地址
一、后端 real server(A、B、C)配置
1、在 A、B、C 三台主机上安装 httpd 包
yum install httpd
2、配置虚拟主机
vim /etc/httpd/conf.d/vir.conf
A 主机:
B 主机
C 主机
3、创建三主机的 URL 目录及主页面
A 主机
mkdir -pv /data/web/
vim /data/web/index.html
内容为 This is Vhost1
B 主机
mkdir -pv /data/web/
vim /data/web/index.html
内容为 This is Vhost2
C 主机
mkdir -pv /data/web/
vim /data/web/index.html
内容为 This is Vhost3
注意:三主机主页面不同,是为了后面实验来区分不同的 real server
启动 httpd 服务:systemctl start httpd.service
二、配置负载均衡节点
D(此主机为 MASTER)
E(此主机为 BACKUP)主机
利用 nginx 的 ngx_http_upsteam_module 模块实现负载均衡
1、安装 nginx 包
在 D、E 主机上分别安装
yum install nginx
2、配置负载均衡
在 D、E 主机上分别安装
vim /etc/nginx/nginx.conf
定义 websvr 组:
upstream websvr {
server 192.168.70.137:80;
server 192.168.70.138:80;
server 192.168.70.140:80;
}
反向代理组 websvr
location / {
proxy_pass http://websvr;
}
三、配置 keepalived 服务
1、全局配置
主机 D 上
主机 E 上配置
2、分别在两个主机上定义脚本 chk_down
此脚本的功能:
文件 /etc/keepalived/down 存在时:虚拟 IP 转义到另一个节点
vrrp_script chk_down {
script“[[-f /etc/keepalived/down]] && exit 1 || exit 0”
interval 1
weight -10
}
3、分别在两个主机上定义脚本 chk_ngx
此脚本功能:
确认 nginx 服务是否正运行
vrrp_script chk_ngx {
script“killall -0 nginx && exit 0 || exit 1”
interval 1
weight -10
fall 2
rise 1
}
4、vrrp_instance 配置
D 主机
E 主机
5、创建 notify 警告配置脚本
分别在两个主机上创建
vim /etc/keepalived/notify.sh
chmod +x notify.sh 给予此脚本执行权限
6、启动服务
systemctl start keepalived.service
四、测试
1、不做修改时,即主机 D 上没有 /etc/keepalived/down 文件
(1)、查看虚拟 IP 位置
在主机 D 上(此主机为 MASTER)
在主机 E 上(此主机为 BACKUP)
通过对比可以看到虚拟 IP 在 D 主机上
(2)、查看 nginx 是否启动
通过脚本 /etc/keepalived/notify.sh 可以看到哪台主机成为 MASTER 状态,哪台主机就自动启动 nginx 服务
主机 D
主机 E
通过对比可以知道主机 D 上的 nginx 服务启动,而主机 E 上的 nginx 服务为启动
(3)访问 URL
curl http:/172.16.1.10
2、在主机 D 上创建 /etc/keepalived/down 文件
touch /etc/keepalived/down
(1)、查看虚拟 IP 位置
在主机 D 上(此主机为 MASTER)
在主机 E 上(此主机为 BACKUP)
通过对比可以看到虚拟 IP 在 E 主机上
(2)、查看 nginx 是否启动
主机 D
主机 E 上
通过对比可以知道主机 E 上的 nginx 服务启动,而主机 D 上的 nginx 服务为启动
(3)访问 URL
curl http:/172.16.1.100
能正常访问,现实了高性能
第二部分实现主 / 主配置
一、增加配置在 D、E 主机上
1、在原有的配置基础上增加一个 vrrp_instance 配置
在主机 D 上配置
在主机 E 上配置
2、修改警告配置脚本
将 backup 时停止 nginx 服务改为启动 nginx 服务
二、检测
1、不做修改时,即主机 D 和 E 上都没有 /etc/keepalived/down 文件
(1)、查看虚拟 IP 位置
在主机 D 上
在主机 E 上
通过对比看到:
虚拟 IP:172.16.1.100 在主机 D 上
虚拟 IP:172.16.1.110 在主机 E 上
(2)查看 nginx 服务状态
主机 D、E 的 nginx 服务都处于启动状态
(3)访问 URL
curl http:/172.16.1.100
curl http:/172.16.1.110
能正常访问,现实了高性能
2、在主机 D 上创建 /etc/keepalived/down 文件
(1)、查看虚拟 IP 位置
在主机 D 上
在主机 E 上
通过对比看到:
虚拟 IP:172.16.1.100 在主机 E 上
虚拟 IP:172.16.1.110 在主机 E 上
(2)查看 nginx 服务状态
主机 D、E 的 nginx 服务都处于启动状态
(3)访问 URL
curl http:/172.16.1.100
curl http:/172.16.1.110
能正常访问,现实了高性能
3、在主机 E 上创建 /etc/keepalived/down 文件
(1)、查看虚拟 IP 位置
在主机 D 上
在主机 E 上
通过对比看到:
虚拟 IP:172.16.1.100 在主机 D 上
虚拟 IP:172.16.1.110 在主机 D 上
(2)查看 nginx 服务状态
主机 D、E 的 nginx 服务都处于启动状态
(3)访问 URL
curl http:/172.16.1.100
curl http:/172.16.1.110
能正常访问,现实了高性能