千家信息网

实验keepalived+nginx+docker是如何实现负载均衡高可用服务的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,下文给大家带来实验keepalived+nginx+docker是如何实现负载均衡高可用服务的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们
千家信息网最后更新 2026年11月02日实验keepalived+nginx+docker是如何实现负载均衡高可用服务的

下文给大家带来实验keepalived+nginx+docker是如何实现负载均衡高可用服务的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。

本次实验中需要使用到四台主机:
四台虚拟机上安装的都是centos7.6操作系统

主机名ip功能
nginx_master192.168.8.128负载均衡,健康检查
nginx_backup192.168.8. 129nginx_master的小弟
web1192.168.8.126提供web服务
web2192.168.8.127提供web服务

说简单点,小弟的作用就是在大哥有危难之际,替大哥挨刀的。当nginx_master出现故障时,nginx_backup就代替nginx_master正常工作。
另外还有一个虚拟 ip:192.168.8.242
keepalived可以将多个无状态的单点通过虚拟IP(VIP)漂移的方式搭建成一个高可用服务。

一、负载均衡云服务器nginx的配置
nginxmaster和nginxbackup上都需要进行以下操作

1、docker安装
安装yum-utils,它提供一个yum-config-manager单元,同时安装的device-mapper-persistent-data和lvm2用于储存设备映射(devicemapper)必须的两个软件包。

yum install -y yum-utils device-mapper-persistent-data lvm2


紧接着配置一个稳定(stable)的仓库
仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件中。

生成元数据

安装docker-ce

2、 配置deamon.json和nginx.conf文件
编辑daemon.json文件,填写阿里云镜像仓库的地址并指定docker数据存储目录
vim daemon.json。

{ "registry-mirrors": ["你的阿里镜像仓库地址"], "graph": "/data/docker" }

重新加载daemon,重启docker服务。

[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker

把docker加入开机启动

拉取一个nginx镜像

创建nginx配置文件目录,启动一个nginx-c容器并把容器里的nginx.conf拷贝到本地

删除容器nginx-c

这两步就是在nginx容器的配置文件的基础上修改参数,以实现想要的功能。

3、创建nginx容器并对其进行配置

(1)编写创建nginx容器的脚本

#!/bin/bash
docker run --name nginx --restart=always -p 80:80 \
-v /data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /data/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/docker/nginx/html:/usr/share/nginx/html \
-v /data/docker/nginx/logs:/var/log/nginx \
-d nginx:latest

注:--restart=always是重启策略,当docker服务重启后,容器也会自动启动

(2) 赋予脚本执行权限 并运行

chmod +x docker_nginx.sh
sh docker_nginx.sh

(3)修改nginx主配置文件

vim /data/docker/nginx/conf/nginx.conf

修改前

修改后

(4) 创建upstream配置文件

vim /data/docker/nginx/conf/conf.d/myhost.conf
upstream xuad {
ip_hash; #会话保持
server 192.168.2.226 max_fails=1 fail_timeout=60s;
server 192.168.2.227 max_fails=1 fail_timeout=60s;
}

(5) 创建虚拟主机配置文件

vim /data/docker/nginx/conf/conf.d/xuad.conf
server {
listen 80;
server_name localhost;
#charset GB2312;
location /
{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://lxc;
}

#查看nginx的并发连接数配置

location /NginxStatus
{
stub_status on;
access_log off;
auth_basic "NginxStatus"; } access_log off;
error_page 404 /404.html;
error_page 500 502 503 504 /404.html;
location = /404.html {
root html;
}
limit_conn perip 200; #同一ip并发数为200,超过会返回503
}


(6)重启nginx容器
docker restart nginx

二、负载均衡服务器keepalived的配置
nginxmaster和nginxbackup上都需要进行以下操作
1 下载并安装keepalived

分别在NGINX_MASTER、NGINX_BACKUP两台服务器上操作
注:keepalived安装在实体机上
yum install wget make gcc gcc-c++ openssl-devel
wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz
tar zxvf keepalived-2.0.7.tar.gz
cd keepalived-2.0.7
./configure --prefix=/data/keepalived

如果报以下警告:
WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
不用担心,我们只需要用到VRRP功能,不需要用IPVS功能,所以请确保以下三项是yes就行了。

编译
make
make install

2、将keepalived 以服务方式启动
创建/etc/keepalived目录并把keepalived的配置文件拷贝/etc/keepalived目录下并加入到开机启动。

mkdir /etc/keepalived
cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ systemctl enable keepalived

3、 修改keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
lxc@lxc.com
}
notification_email_from root@lxc.com
smtp_server mail.lxc.com
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_pid.sh" # 检查nginx状态的脚本
interval 2
weight 3
}
vrrp_instance VI_1 {
state MASTER #备份服务器上将MASTER改为BACKUP
interface ens32 virtual_router_id 51 priority 100 #备份服务上将100改为小于100,可配置成90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.242 #有多个vip可在下面继续增加
}
track_script {
chk_nginx
}
}

4、添加检查nginx状态的脚本

vim /etc/keepalived/nginx_pid.sh
#!/bin/bash
#version 0.0.1
A=ps -C nginx --no-header |wc -l
if [ $A -eq 0 ];then
systemctl restart docker
sleep 3
if [ ps -C nginx --no-header |wc -l -eq 0 ];then
systemctl stop keepalived
fi
fi

脚本说明:当nginx进程不存在时,会自动重启docker服务,docker服务启动时会自动启动nginx容器;再次检查nginx进程,如果不存在,就停止keepalived服务,然后NGINX_BACKUP主机会自动接替NGINX_MASTER的工作。

chmod +x /etc/keepalived/nginx_pid.sh

5、配置firewalld防火墙允许vrrp协议

VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.8.129" protocol value="vrrp" accept"
firewall-cmd --reload


如果是backup服务器,source address改成master服务器的IP

6 、启动keepalived

systemctl start keepalived

三、 配置时间同步

在NGINX_MASTER和NGINX_BACKUP上安装ntp

yum -y install ntp

在NGINX_MASTER上修改ntp配置文件
添加以下两行。

vim /etc/ntp.conf
server 127.127.1.0 iburst local clock #添加使用本地时间 restrict 192.168.8.0 mask 255.255.255.0 nomodify #允许更新的IP地址段

在NGINX_MASTER上启动ntp服务,并加入开机启动
systemctl start ntpd systemctl enable ntpd

在NGINX_MASTER上添加防火墙策略
只允许192.168.8.129访问ntp服务。

在NGINX_BACKUP上同步NGINX_MASTER的时间

ntpdate 192.168.8.128

在NGINX_BACKUP上设置计划任务
每天凌晨5点01分同步时间。

crontab -e 1 5 * /usr/sbin/ntpdate 192.168.8.128 >> /var/log/upClock.log

四、负载均衡服务器测试

1、测试nginx服务器
(1)当NGINX_MASTER、NGINX_BACKUP服务器nginx均正常工作时查看VIP
在NGINX_MASTER上

在NGINX_BACKUP上

master服务器ens32网卡正常绑定VIP,而backup却没有绑定,通过浏览器可正常访问网站。

(2)关闭NGINX_MASTER的nginx容器
当nginx容器停止后,马上就又启起来了,nginx启动脚本没问题

(3)关闭NGINX_MASTER的keepalived服务
在NGINX_MASTER上。

在NGINX_BACKUP上

NGINX_BACKUP的ens32网卡已瞬间绑定VIP,通过浏览器访问网站正常。

(4)将NGINX_MASTER的keepalived服务启动
在NGINX_MASTER上

在NGINX_BACKUP上

NGINX_MASTER的ens32网卡重新绑定VIP,通过浏览器访问网站正常。

2、测试WEB服务器

关闭WEB_1服务器

通过浏览器访问网站正常。

看了以上关于实验keepalived+nginx+docker是如何实现负载均衡高可用服务的,如果大家还有什么地方需要了解的可以在行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,技术工程师在行业内拥有十几年的经验了。

服务 配置 服务器 容器 文件 均衡 脚本 主机 仓库 功能 时间 浏览器 目录 网站 检查 浏览 实验 地址 状态 网卡 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 咖啡网 百单网互联网科技有限公司 上海喔噻互联网科技有限公司 百单网互联网科技有限公司怎么样 科技互联网企业 融贸通互联网科技 互联网科技博客 深圳卡尔迅互联网科技有限公司怎么样 深圳国际航运科技和互联网 广州慧亚互联网科技怎么样 欧洲十大科技互联网公司 河南住房之家互联网科技 工业互联网等科技实现智能化赋能 互联网科技如何创业 锡山区互联网智能科技产品供应 陕西九四连强互联网科技有限公司 美国五大互联网科技公司市值多少 科技和互联网行业的特点 10位科技互联网大佬 互联网大会出现的黑科技 科技赋能下的互联网金融 致骋互联网科技 融贸通互联网科技 掌上梦互联网科技 盛创互联网科技有限公司 天速互联网络科技有限公司 互联网大会黑科技排名 新兴科技互联网创新大赛颁奖典礼 互联网对科技影响 网互联网络科技
0