docker-centos中基于keepalived+niginx模拟主从热备完整过程

文章目录

  • 一、环境准备
  • 二、主机
    • 1、环境搭建
      • [1.1 镜像拉取](#1.1 镜像拉取)
      • [1.2 创建网桥](#1.2 创建网桥)
      • [1.3 启动容器](#1.3 启动容器)
      • [1.4 配置镜像源](#1.4 配置镜像源)
      • [1.5 下载工具包](#1.5 下载工具包)
      • [1.6 下载keepalived](#1.6 下载keepalived)
      • [1.7 下载nginx](#1.7 下载nginx)
    • 2、配置
      • [2.1 配置keepalived](#2.1 配置keepalived)
      • [2.2 配置nginx](#2.2 配置nginx)
        • [2.2.1 查看nginx.conf](#2.2.1 查看nginx.conf)
        • [2.2.2 修改index.html](#2.2.2 修改index.html)
    • 3、启动
      • [3.1 启动nginx](#3.1 启动nginx)
      • [3.2 启动keepalived](#3.2 启动keepalived)
    • 4、状态查看
    • [4.1 查看nginx状态](#4.1 查看nginx状态)
      • [4.2 查看keepalived状态](#4.2 查看keepalived状态)
    • 4、停止
      • [4.1 停止nginx](#4.1 停止nginx)
      • [4.2 停止keepalived](#4.2 停止keepalived)
  • 三、从机
    • 1、方法一:重复主机步骤
      • [1.1 将步骤 (1.2 创建网桥)改为如下:](#1.1 将步骤 (1.2 创建网桥)改为如下:)
      • [1.2 将步骤2.1 配置keepalived内容改为如下](#1.2 将步骤2.1 配置keepalived内容改为如下)
      • [1.3 将步骤(2.2.2 修改index.html)修改网页内容(可选)](#1.3 将步骤(2.2.2 修改index.html)修改网页内容(可选))
    • 2、方法二:克隆主机虚拟机
      • [2.1 克隆完成、启动虚拟机,修改网桥](#2.1 克隆完成、启动虚拟机,修改网桥)
        • [2.1.1 创建网桥](#2.1.1 创建网桥)
        • [2.1.2 启动容器连接到创建的网桥](#2.1.2 启动容器连接到创建的网桥)
      • [2.2 修改keepalived的配置](#2.2 修改keepalived的配置)
  • 四、路由
    • 1、主机
      • [1.1 网卡情况](#1.1 网卡情况)
      • [1.2 查看路由](#1.2 查看路由)
      • [1.3 添加路由](#1.3 添加路由)
      • [1.4 最后路由表](#1.4 最后路由表)
    • 2、从机
      • [2.1 网卡情况](#2.1 网卡情况)
      • [2.2 查看路由](#2.2 查看路由)
      • [2.3 添加路由](#2.3 添加路由)
      • [2.4 最后路由情况](#2.4 最后路由情况)
    • 3、宿主机(windows主机)
      • [3.1 添加路由](#3.1 添加路由)

一、环境准备

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 根据宿主机的系统选择安装docker ++🔗在Ubuntu中安装docker++ ++🔗在CentOS中安装docker++ |

二、主机

1、环境搭建

1.1 镜像拉取

bash 复制代码
docker pull centos

1.2 创建网桥

bash 复制代码
docker network create -d=bridge --subnet=192.168.99.0/24 br2

1.3 启动容器

bash 复制代码
docker run -it --name centos-1 --privileged -v /home/vac/linux:/mnt/software -p 9901:80 --net=br2 centos bash

1.4 配置镜像源

找到目录

bash 复制代码
cd /etc/yum.repos.d/

修改源

bash 复制代码
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

修改url

bash 复制代码
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

更新一下(时间较长)

bash 复制代码
yum -y update

1.5 下载工具包

ifconfig、route命令使用的net-tools工具包

bash 复制代码
yum -y install net-tools

vim编辑器

bash 复制代码
yum -y install vim

1.6 下载keepalived

bash 复制代码
yum -y install keepalived

1.7 下载nginx

bash 复制代码
yum -y install nginx

2、配置

2.1 配置keepalived

编辑keepalived.conf文件

bash 复制代码
vim /etc/keepalived/keepalived.conf

输入以下内容

bash 复制代码
! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_150
}

vrrp_instance VI_1 {
    # 表示的状态,当前的130服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface eth0
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.17
    }
}

2.2 配置nginx

2.2.1 查看nginx.conf
bash 复制代码
vim /etc/nginx/nginx.conf

内容如下

bash 复制代码
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    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 / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
2.2.2 修改index.html
bash 复制代码
vim /usr/share/nginx/html/index.html

输入以下内容

html 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Test Page for the Nginx HTTP Server on Red Hat Enterprise Linux</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style type="text/css">
            /*<![CDATA[*/
            body {
                background-color: #fff;
                color: #000;
                font-size: 0.9em;
                font-family: sans-serif,helvetica;
                margin: 0;
                padding: 0;
            }
            :link {
                color: #c00;
            }
            :visited {
                color: #c00;
            }
            a:hover {
                color: #f50;
            }
            h1 {
                text-align: center;
                margin: 0;
                padding: 0.6em 2em 0.4em;
                background-color: #900;
                color: #fff;
                font-weight: normal;
                font-size: 1.75em;
                border-bottom: 2px solid #000;
            }
            h1 strong {
                font-weight: bold;
                font-size: 1.5em;
            }
            h2 {
                text-align: center;
                background-color: #900;
                font-size: 1.1em;
                font-weight: bold;
                color: #fff;
                margin: 0;
                padding: 0.5em;
                border-bottom: 2px solid #000;
            }
            hr {
                display: none;
            }
            .content {
                padding: 1em 5em;
            }
            .alert {
                border: 2px solid #000;
            }

            img {
                border: 2px solid #fff;
                padding: 2px;
                margin: 2px;
            }
            a:hover img {
                border: 2px solid #294172;
            }
            .logos {
                margin: 1em;
                text-align: center;
            }
            /*]]>*/
        </style>
    </head>

    <body>
        <h1>Welcome to <strong>nginx</strong> on Red Hat Enterprise Linux!(Master)</h1>
        <h1>192.168.99.2</h1>
        <div class="content">
            <p>This page is used to test the proper operation of the
            <strong>nginx</strong> HTTP server after it has been
            installed. If you can read this page, it means that the
            web server installed at this site is working
            properly.</p>

            <div class="alert">
                <h2>Website Administrator</h2>
                <div class="content">
                    <p>This is the default <tt>index.html</tt> page that
                    is distributed with <strong>nginx</strong> on
                    Red Hat Enterprise Linux.  It is located in
                    <tt>/usr/share/nginx/html</tt>.</p>

                    <p>You should now put your content in a location of
                    your choice and edit the <tt>root</tt> configuration
                    directive in the <strong>nginx</strong>
                    configuration file
                    <tt>/etc/nginx/nginx.conf</tt>.</p>

                    <p>For information on Red Hat Enterprise Linux, please visit the <a href="http://www.redhat.com/">Red Hat, Inc. website</a>. The documentation for Red Hat Enterprise Linux is <a href="http://www.redhat.com/docs/manuals/enterprise/">available on the Red Hat, Inc. website</a>.</p>

                </div>
            </div>

            <div class="logos">
                <a href="http://nginx.net/"><img
                    src="nginx-logo.png" 
                    alt="[ Powered by nginx ]"
                    width="121" height="32" /></a>
                <a href="http://www.redhat.com/"><img
                    src="poweredby.png"
                    alt="[ Powered by Red Hat Enterprise Linux ]"
                    width="88" height="31" /></a>
            </div>
        </div>
    </body>
</html>

3、启动

3.1 启动nginx

bash 复制代码
nginx

3.2 启动keepalived

bash 复制代码
keepalived -l -f /etc/keepalived/keepalived.conf

4、状态查看

4.1 查看nginx状态

bash 复制代码
ps -ef|grep nginx

打印返回

markup 复制代码
root          43       1  0 08:40 ?        00:00:00 nginx: master process nginx
nginx         44      43  0 08:40 ?        00:00:00 nginx: worker process
nginx         45      43  0 08:40 ?        00:00:00 nginx: worker process
nginx         46      43  0 08:40 ?        00:00:00 nginx: worker process
nginx         47      43  0 08:40 ?        00:00:00 nginx: worker process
root          57      19  0 08:49 pts/1    00:00:00 grep --color=auto nginx

4.2 查看keepalived状态

查看进程

bash 复制代码
ps -ef|grep keepalived

打印返回

markup 复制代码
root          62       1  2 08:51 ?        00:00:00 keepalived -l -f /etc/keepalived/keepalived.conf
root          63      62  4 08:51 ?        00:00:00 keepalived -l -f /etc/keepalived/keepalived.conf
root          67      19  0 08:51 pts/1    00:00:00 grep --color=auto keepalived

查看vip挂载情况

bash 复制代码
ip a

打印返回

markup 复制代码
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:c0:a8:63:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.99.2/24 brd 192.168.99.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.200.17/32 scope global eth0
       valid_lft forever preferred_lft forever

4、停止

4.1 停止nginx

bash 复制代码
nginx -s stop

4.2 停止keepalived

bash 复制代码
pkill keepalived

三、从机

1、方法一:重复主机步骤

1.1 将步骤 (1.2 创建网桥)改为如下:

bash 复制代码
docker network create -d=bridge --subnet=192.168.111.0/24 br2

1.2 将步骤2.1 配置keepalived内容改为如下

bash 复制代码
! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_151
}

vrrp_instance VI_1 {
    # 表示的状态,当前的130服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface eth0
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 60
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.17
    }
}

1.3 将步骤(2.2.2 修改index.html)修改网页内容(可选)

html 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>Test Page for the Nginx HTTP Server on Red Hat Enterprise Linux</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style type="text/css">
            /*<![CDATA[*/
            body {
                background-color: #fff;
                color: #000;
                font-size: 0.9em;
                font-family: sans-serif,helvetica;
                margin: 0;
                padding: 0;
            }
            :link {
                color: #c00;
            }
            :visited {
                color: #c00;
            }
            a:hover {
                color: #f50;
            }
            h1 {
                text-align: center;
                margin: 0;
                padding: 0.6em 2em 0.4em;
                background-color: #900;
                color: #fff;
                font-weight: normal;
                font-size: 1.75em;
                border-bottom: 2px solid #000;
            }
            h1 strong {
                font-weight: bold;
                font-size: 1.5em;
            }
            h2 {
                text-align: center;
                background-color: #900;
                font-size: 1.1em;
                font-weight: bold;
                color: #fff;
                margin: 0;
                padding: 0.5em;
                border-bottom: 2px solid #000;
            }
            hr {
                display: none;
            }
            .content {
                padding: 1em 5em;
            }
            .alert {
                border: 2px solid #000;
            }

            img {
                border: 2px solid #fff;
                padding: 2px;
                margin: 2px;
            }
            a:hover img {
                border: 2px solid #294172;
            }
            .logos {
                margin: 1em;
                text-align: center;
            }
            /*]]>*/
        </style>
    </head>

    <body>
        <h1>Welcome to <strong>nginx</strong> on Red Hat Enterprise Linux!(Master)</h1>
        <h1>192.168.111.2</h1>
        <div class="content">
            <p>This page is used to test the proper operation of the
            <strong>nginx</strong> HTTP server after it has been
            installed. If you can read this page, it means that the
            web server installed at this site is working
            properly.</p>

            <div class="alert">
                <h2>Website Administrator</h2>
                <div class="content">
                    <p>This is the default <tt>index.html</tt> page that
                    is distributed with <strong>nginx</strong> on
                    Red Hat Enterprise Linux.  It is located in
                    <tt>/usr/share/nginx/html</tt>.</p>

                    <p>You should now put your content in a location of
                    your choice and edit the <tt>root</tt> configuration
                    directive in the <strong>nginx</strong>
                    configuration file
                    <tt>/etc/nginx/nginx.conf</tt>.</p>

                    <p>For information on Red Hat Enterprise Linux, please visit the <a href="http://www.redhat.com/">Red Hat, Inc. website</a>. The documentation for Red Hat Enterprise Linux is <a href="http://www.redhat.com/docs/manuals/enterprise/">available on the Red Hat, Inc. website</a>.</p>

                </div>
            </div>

            <div class="logos">
                <a href="http://nginx.net/"><img
                    src="nginx-logo.png" 
                    alt="[ Powered by nginx ]"
                    width="121" height="32" /></a>
                <a href="http://www.redhat.com/"><img
                    src="poweredby.png"
                    alt="[ Powered by Red Hat Enterprise Linux ]"
                    width="88" height="31" /></a>
            </div>
        </div>
    </body>
</html>

2、方法二:克隆主机虚拟机

2.1 克隆完成、启动虚拟机,修改网桥

2.1.1 创建网桥
bash 复制代码
docker network create -d=bridge --subnet=192.168.111.0/24 br0
2.1.2 启动容器连接到创建的网桥
bash 复制代码
docker run -it --name centos-1 --privileged -v /home/vac/linux:/mnt/software -p 9901:80 --network=br0 centos bash

2.2 修改keepalived的配置

输入命令

bash 复制代码
vim /etc/keepalived/keepalived.conf

修改内容如下:

bash 复制代码
! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_151
}

vrrp_instance VI_1 {
    # 表示的状态,当前的130服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface eth0
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 60
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.17
    }
}

四、路由

具体路由情况示意图

1、主机

1.1 网卡情况

输入命令

bash 复制代码
ifconfig

打印返回

bash 复制代码
br-4bd1ee90e211: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.99.1  netmask 255.255.255.0  broadcast 192.168.99.255
        inet6 fe80::42:29ff:fee8:aade  prefixlen 64  scopeid 0x20<link>
        ether 02:42:29:e8:aa:de  txqueuelen 0  (Ethernet)
        RX packets 51808  bytes 3263249 (3.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 71190  bytes 130020293 (130.0 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:65ff:fe2d:ef09  prefixlen 64  scopeid 0x20<link>
        ether 02:42:65:2d:ef:09  txqueuelen 0  (Ethernet)
        RX packets 4  bytes 224 (224.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 228  bytes 23485 (23.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.157  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::f040:fdbe:78e1:5077  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b6:5d:6c  txqueuelen 1000  (Ethernet)
        RX packets 4329116  bytes 940869997 (940.8 MB)
        RX errors 0  dropped 345204  overruns 0  frame 0
        TX packets 284583  bytes 29536782 (29.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 26728  bytes 3141066 (3.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26728  bytes 3141066 (3.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vethd5c0922: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::a075:3cff:fe3c:d62  prefixlen 64  scopeid 0x20<link>
        ether a2:75:3c:3c:0d:62  txqueuelen 0  (Ethernet)
        RX packets 385  bytes 20670 (20.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1841  bytes 83533 (83.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1.2 查看路由

输入命令

bash 复制代码
route -n

打印返回

bash 复制代码
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.99.0    0.0.0.0         255.255.255.0   U     0      0        0 br-4bd1ee90e211
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

1.3 添加路由

主机到从机的路由

bash 复制代码
route add -net 192.168.111.0/24 gw 192.168.100.158

主机到vip的路由

bash 复制代码
route add -net 192.168.200.0/24 gw 192.168.99.2

vip到从机的路由

bash 复制代码
route add -net 192.168.200.0/24 gw 192.168.100.158

1.4 最后路由表

输入命令

bash 复制代码
route -n

打印返回

bash 复制代码
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.99.0    0.0.0.0         255.255.255.0   U     0      0        0 br-4bd1ee90e211
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.111.0   192.168.100.158 255.255.255.0   UG    0      0        0 ens33
192.168.200.0   192.168.99.2    255.255.255.0   UG    0      0        0 br-4bd1ee90e211
192.168.200.0   192.168.100.158 255.255.255.0   UG    0      0        0 ens33

2、从机

2.1 网卡情况

输入命令

bash 复制代码
ip a

打印返回

bash 复制代码
br-feca604495c7: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.111.1  netmask 255.255.255.0  broadcast 192.168.111.255
        inet6 fe80::42:7ff:fe57:5d4d  prefixlen 64  scopeid 0x20<link>
        ether 02:42:07:57:5d:4d  txqueuelen 0  (Ethernet)
        RX packets 86544  bytes 7152949 (7.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92024  bytes 132312772 (132.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:69ff:fe89:fc8c  prefixlen 64  scopeid 0x20<link>
        ether 02:42:69:89:fc:8c  txqueuelen 0  (Ethernet)
        RX packets 4358  bytes 264361 (264.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8778  bytes 19961998 (19.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.158  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::5d22:1c65:d887:63e6  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:6a:2e:27  txqueuelen 1000  (Ethernet)
        RX packets 4140156  bytes 766431979 (766.4 MB)
        RX errors 0  dropped 342651  overruns 0  frame 0
        TX packets 212125  bytes 22585816 (22.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 47516  bytes 4932330 (4.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 47516  bytes 4932330 (4.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vethbe7b7fe: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::18e7:2fff:fea9:3b8e  prefixlen 64  scopeid 0x20<link>
        ether 1a:e7:2f:a9:3b:8e  txqueuelen 0  (Ethernet)
        RX packets 271733  bytes 15045369 (15.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 43223  bytes 2358797 (2.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.2 查看路由

输入命令

bash 复制代码
route -n

打印返回

bash 复制代码
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.111.0   0.0.0.0         255.255.255.0   U     0      0        0 br-feca604495c7

2.3 添加路由

从机到主机的路由

bash 复制代码
route add -net 192.168.99.0/24 gw 192.168.100.157

从机到vip的路由

bash 复制代码
route add -net 192.168.200.0/24 gw 192.168.111.2

vip到主机的路由

bash 复制代码
route add -net 192.168.200.0/24 gw 192.168.100.157

2.4 最后路由情况

markup 复制代码
route -n
bash 复制代码
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.99.0    192.168.100.157 255.255.255.0   UG    0      0        0 ens33
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.111.0   0.0.0.0         255.255.255.0   U     0      0        0 br-feca604495c7
192.168.200.0   192.168.111.2   255.255.255.0   UG    0      0        0 br-feca604495c7
192.168.200.0   192.168.100.157 255.255.255.0   UG    0      0        0 ens33

3、宿主机(windows主机)

3.1 添加路由

vip到主机

bash 复制代码
route add 192.168.200.0 mask 255.255.255.0 192.168.100.157

vip到从机

bash 复制代码
route add 192.168.200.0 mask 255.255.255.0 192.168.100.158
相关推荐
x,,xx1112 小时前
近期学习总结
运维·docker·容器
i小溪2 小时前
如何通过docker容器反查容器和宿主机的挂载目录?
docker·容器
Spring-wind3 小时前
【docker】将本地镜像打包部署到服务器上
服务器·docker·容器
武子康3 小时前
Java-74 深入浅出 RPC Dubbo Admin可视化管理 安装使用 源码编译、Docker启动
java·分布式·后端·spring·docker·rpc·dubbo
落落鱼20134 小时前
CentOS服务器安装Supervisor使队列可以在后台运行
linux·服务器·centos·队列
seth5 小时前
coding 要停服了, 把所有 CI 迁移到 Github 上 (服务器无需翻墙)
ci/cd·docker·github
杨浦老苏5 小时前
开源一体化协作平台Colanode
笔记·docker·即时通讯·群晖·协助
澜兮子6 小时前
k8s-高级调度(二)
云原生·容器·kubernetes
David爱编程6 小时前
Kubernetes ConfigMap 与 Secret 完全解读:配置管理的正确打开方式
云原生·容器·kubernetes
loopdeloop7 小时前
基于CentOS的分布式GitLab+Jenkins+Docker架构:企业级CI/CD流水线实战全记录
分布式·docker·centos