haproxy+keepalived案例
环境准备
序号 | IP地址 | 角色 | 服务 |
---|---|---|---|
1 | 172.25.10.10 | 客户端 | 主要由于测试 |
2 | 172.25.10.100(VIP:172.25.10.200) | Master | keepalived+haproxy |
3 | 172.25.10.110(VIP:172.25.10.200) | Backup | keepalived+haproxy |
4 | 172.25.10.120 | WEB1 | nginx |
5 | 172.25.10.130 | WEB2 | nginx |
1.搭建nginx1
搭建nginx可以参考
源码安装nginx,并提供服务脚本
yum install -y pcre-devel openssl-devel wget
yum install gcc gcc-c++ make -y
groupadd -r -g 995 nginx
useradd -r -u 995 -g 995 -s /sbin/nologin -M nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf nginx-1.18.0.tar.gz -C /usr/local/src/
cd /usr/local/src/nginx-1.18.0/
./configure --user=nginx --group=nginx \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_auth_request_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-http_stub_status_module
make && make install
配置服务脚本
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/After=network-online.target remote-fs.targe nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
修改文件内容
cd /usr/local/nginx/html/
echo "`hostname -I`,web test page" > test.html
测试:
2. 安装nginx2
编译安装的步骤与Nginx1相同,不同之处在于建立的测试网页。
echo "`hostname -I`,web test page" > test.html
测试:
3.编译安装haproxy
4. 安装keepalived
仓库安装
yum -y install ipvsadm keepalived
启动服务
systemctl enable --now keepalived
配置keepalived.cof
检查:
案例测试
客户端打开浏览器访问http://172.25.10.200/test.html,
刷新两次浏览器查看网页内容测试负载均衡
断开web1,在次访问刷新两次测试高可用(此时应只能看到172.25.10.130)。
开启web1的服务,断掉keepalived主调度器网络,继续访问http://172.25.10.200/test.html,访问成功即keepalived负载均衡成功(此时应能看到172.25.10.120和172.25.10.130两个网页)。