虛擬機橋接模式,獨立ip和網卡
|
IP
|
角色
|
|
192.168.0.107
|
master
|
|
192.168.0.111
|
slave
|
配置虛擬機網卡靜態ip
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="a4fa6313-d874-4d7e-ade4-463878ca48b6"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.0.107
#以下配置參考宿主機配置
GATEWAY=192.168.0.1
DNS1=192.168.1.1
DNS2=192.168.0.1
配置保存之後重啓網卡
systemctl restart network
查看配置是否生效
ip addr
生效的網卡為ens33
ens33: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:8f:47:6f brd ff:ff:ff:ff:ff:ff
inet 192.168.0.107/24 brd 192.168.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.0.200/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::dc9e:7948:4e5e:3056/64 scope link noprefixroute
valid_lft forever preferred_lft forever
環境直接安裝docker
第一步:設置 yum 倉庫地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第二步:更新 yum 緩存
sudo yum makecache fast #yum 是包管理器
第三步:安裝新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
#啓動docker服務
systemctl restart docker
#將docker服務添加到linux 開機啓動
systemtctl enable docker
Docker鏡像加速
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
# -v 是指卷掛載,將宿主機路徑掛載到‘:’後面的容器路徑上
docker run -d -p 80:80 --name nginx-web \
-v /usr/local/nginx/www:/usr/share/nginx/html \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/logs:/var/log/nginx nginx
安裝部署keepalived
yum install -y keepalived
systemctl enable keepalived
systemctl start keepalived
修改keepalived配置
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
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
}
vrrp_instance VI_1 {
# master 結點配置MASTER slave 結點配置BACKUP
state MASTER
# 綁定虛機生效的網卡
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 配置HA集羣虛擬IP
virtual_ipaddress {
192.168.0.200
}
#配置生膠的檢測腳本
track_script {
chk_http_port
}
}
vrrp_script chk_http_port {
#心跳執行的腳本,檢測nginx是否啓動
script "/usr/local/src/check_nginx_pid.sh"
#(檢測腳本執行的間隔)
interval 2
#權重
weight 2
}
# 上述配置的虛擬ip
virtual_server 192.168.0.200 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
# persistence_timeout 50
protocol TCP
# 集羣中虛機配置的靜態ip
real_server 192.168.0.107 80 {
weight 1
TCP_CHECK {
connect_timeout 3
delay_before_retry 3
}
}
real_server 192.168.0.111 80 {
weight 1
TCP_CHECK {
connect_timeout 3
delay_before_retry 3
}
}
虛機健康度檢測腳本
#!/bin/bash
#檢測nginx是否啓動了
if [[ ! -n $(docker ps -q -f name=^nginx-web) ]];then
docker start nginx-web
# echo '重啓ng'
if [[ ! -n $(docker ps -q -f name=^nginx-web) ]];then
#nginx重啓失敗,則停掉keepalived服務,進行VIP轉移
systemctl stop keepalived
fi
exit 1
else
exit 0
fi
# 給腳本配置執行權限
chmod 755 /usr/local/src/check_nginx_pid.sh
測試工作
刪除容器,觀察是否被重啓
docker fm -rf nginx-web
查看keepalived 狀態,確認已經被stop, active: dead
[root@klv-master src]# systemctl status keepalived.service -l
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2022-12-15 03:36:43 EST; 1s ago
Process: 2090 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 2091 (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 5.2M
CGroup: /system.slice/keepalived.service
Dec 15 03:36:34 klv-master Keepalived_vrrp[2093]: /usr/local/src/check_nginx_pid.sh exited with status 1
Dec 15 03:36:36 klv-master Keepalived_vrrp[2093]: /usr/local/src/check_nginx_pid.sh exited with status 1
Dec 15 03:36:38 klv-master Keepalived_vrrp[2093]: /usr/local/src/check_nginx_pid.sh exited with status 1
Dec 15 03:36:40 klv-master Keepalived_vrrp[2093]: /usr/local/src/check_nginx_pid.sh exited with status 1
Dec 15 03:36:42 klv-master systemd[1]: Stopping LVS and VRRP High Availability Monitor...
Dec 15 03:36:42 klv-master Keepalived[2091]: Stopping
Dec 15 03:36:42 klv-master Keepalived_vrrp[2093]: VRRP_Instance(VI_1) sent 0 priority
Dec 15 03:36:42 klv-master Keepalived_vrrp[2093]: VRRP_Instance(VI_1) removing protocol VIPs.
Dec 15 03:36:42 klv-master Keepalived_vrrp[2093]: VRRP_Instance(VI_1) removing protocol iptable drop rule
Dec 15 03:36:43 klv-master systemd[1]: Stopped LVS and VRRP High Availability Monitor.
訪問虛擬ip
192.168.0.200
恢復容器後再次訪問
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。