docker pull centos
docke images
创建容器,我这里在创建容器之前选择先建立网络桥段(可以选择不建立)
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 br0
docker network ls 此行命令用于列出已建立的网络桥段 可以使用 docker network inspect br0 查看具体信息
创建容器 --name指定容器名 --network指定网络桥段 --ip指定容器ip地址, -p指定端口映射 宿主机端口:容器端口 最后镜像名称
docker run -itd --name centos --network=br0 --ip 172.18.0.10 -p 9980:80 centos
运行容器 docker exec -it centos /bin/bash
在CentOS 8系统中安装Nginx只需输入以下命令即可:
$ sudo yum install nginx
安装完成后,使用以下命令启用并启动Nginx服务:
$ sudo systemctl status nginx
$ sudo systemctl start nginx
浏览器访问localhost:9980,出现nginx欢迎页面则安装成功
yum -y install kernel-devel*
yum -y install openssl-*
yum -y install popt-devel
yum -y install lrzsz
yum -y install openssh-clients
yum -y install libnl libnl-devel popt
yum -y install gcc gcc-c++
在CentOS系统下安装keepalived可使用如下命令:
yum -y install keepalived
这里提前准备了两台nginx容器分别对应端口9980,9981,一台master容器(9982)和一个backup(9983)容器作为演示
nginx配置
upstream proxy_test {
server 172.18.0.10:80 weight=2;
server 172.18.0.11:80 weight=1;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://proxy_test;
index index.html;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
主keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
script_user root
enable_script_security
}
vrrp_script chk_nginx
{
script "/etc/keepalived/nginx_check.sh" #运行脚本
interval 2 # 检测时间间隔
weight -20 # 如果条件成立,则权重 -20
rise 1
fall 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 8880
}
track_script {
chk_nginx #执行 Nginx 监控服务
}
virtual_ipaddress {
192.168.200.100
#192.168.200.17
#192.168.200.18
}
}
备keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
#smtp_server 192.168.200.1
#smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
script_user root
enable_script_security
}
vrrp_script chk_nginx
{
script "/etc/keepalived/nginx_check.sh" #运行脚本
interval 2 # 检测时间间隔
weight -20 # 如果条件成立,则权重 -20
rise 1
fall 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 8880
}
track_script {
chk_nginx #执行 Nginx 监控服务
}
virtual_ipaddress {
192.168.200.100
#192.168.200.17
#192.168.200.18
}
}
测试,先将主备nginx和keepalived都启动
查看主nginx的eth0设置:
vip绑定在主nginx的eth0上。
查看备nginx的eth0设置:
将主nginx的keepalived停止或将主nginx关机(相当于模拟宕机),查看主nginx的eth0:
eth0没有绑定vip
注意这里模拟的是停止 keepalived进程没有模拟宕机,所以还要将nginx进程也停止表示主nginx服务无法提供。
查看备nginx的eth0:
vip已经漂移到备nginx。
将主nginx的keepalived和nginx都启动。
查看主nginx的eth0:
查看备nginx的eth0:
eth0没有绑定vip
到此配置成功。
如有问题,欢迎关注公众号(灵心师),大家一起交流探讨。我是灵心一动