LVS+Keepalived+DNS 高可用项目

打印 上一主题 下一主题

主题 1867|帖子 1867|积分 5601

项目架构


主机规划

主机IP角色软件lb-master172.25.250.105主备负载均衡器ipvsadm,keepalivedlb-backup172.25.250.106同时做web和dns调理ipvsadm,keepaliveddns-master172.25.250.107VIP:172.25.250.100binddns-slave172.25.250.108LVS DNS 节点互为主从同步bindweb01172.25.250.201nginx,bind-utilsweb02172.25.250.202LVS WEB 节点,VIP:172.25.250.200nginx,bind-utilsweb03172.25.250.203nginx,bind-utils !!!本章笔记中博主是根据自己的主机规划来修改主机名以及 IP 地址的这一步不是必须的,各人根据自身捏造机原来的就好,记得哪台主机做的什么角色就行
注意:所有主机的防火墙和 Selinux 都关闭

  1. # 关闭防火墙
  2. systemctl disable --now firewalld
  3. # 临时关闭selinux
  4. setenforce 0
  5. # 永久关闭selinux
  6. sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
  7. 永久挂载仓库
  8. [root@localhost ~]# vim /etc/fstab
  9. [root@localhost ~]# cat /etc/fstab
  10. /dev/mapper/rhel-root   /                       xfs     defaults        0 0
  11. UUID=589b1fb8-b9eb-461f-ab73-55252609a21e /boot                   xfs     defaults        0 0
  12. UUID=95BF-10A3          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
  13. /dev/mapper/rhel-swap   none                    swap    defaults        0 0
  14. /dev/sr0                /mnt                    iso9660  defaults       0 0
  15. [root@localhost ~]# systemctl daemon-reload
  16. [root@localhost ~]# mount -a
复制代码
搭建 DNS 服务

设置主服务 DNS

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname dns-master
  2. [root@localhost ~]# nmcli c modify ens160 ipv4.method manual  ipv4.addresses 172.25.250.107 /24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
  3. [root@localhost ~]# nmcli c up ens160
复制代码
挂载堆栈并下载服务

  1. [root@dns-master ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@dns-master ~]# dnf -y install bind
复制代码
修改核心设置文件

  1. [root@dns-master ~]# vim /etc/named.conf
  2. [root@dns-master ~]# cat /etc/named.conf
  3. options {
  4.         listen-on port 53 { 172.25.250.107;172.25.250.100; };
  5.         directory         "/var/named";
  6. };
  7. zone "mingyue.com" IN {
  8.         type master;
  9.         file "mingyue.zone";
  10.         allow-transfer { 172.25.250.108; };
  11. };
  12. zone "250.25.172.in-addr.arpa" IN {
  13.         type master;
  14.         file "mingyue.fanxiang";
  15.         allow-transfer { 172.25.250.108; };
  16. };
复制代码
查抄设置文件是否有误(没有消息提示分析设置文件修改没题目,如有根据提示修改设置文件)

  1. [root@dns-master ~]# named-checkconf
复制代码
编写正向解析区域数据文件

  1. [root@dns-master ~]# vim /var/named/mingyue.zone
  2. [root@dns-master ~]# cat /var/named/mingyue.zone
  3. $TTL        1D
  4. @        IN        SOA        ns1.mingyue.com.        root.mingyue.com. (0 1H 1D 1W 3D)
  5.         IN        NS        ns1.mingyue.com.
  6.         IN        NS        ns2
  7. ns1        IN        A        172.25.250.107
  8. ns2        IN        A        172.25.250.108
  9. www        IN        A        172.25.250.200
  10. txt        IN        TXT        "AaBbCcDdEeFf"       
复制代码
查抄正向解析区域数据文件是否有误

  1. [root@dns-master ~]# named-checkzone mingyue.com /var/named/mingyue.zone
  2. zone mingyue.com/IN: loaded serial 0
  3. OK
复制代码
编写反向解析区域数据文件并查抄是否有误

  1. [root@dns-master ~]# cp -a /var/named/mingyue.zone /var/named/mingyue.fanxiang
  2. [root@dns-master ~]# ll /var/named/
  3. total 24
  4. drwxrwx---. 2 named named    6 Aug 28  2024 data
  5. drwxrwx---. 2 named named    6 Aug 28  2024 dynamic
  6. -rw-r--r--. 1 root  root   202 Apr 12 14:09 mingyue.fanxiang
  7. -rw-r--r--. 1 root  root   202 Apr 12 14:09 mingyue.zone
  8. -rw-r-----. 1 root  named 2112 Aug 28  2024 named.ca
  9. -rw-r-----. 1 root  named  152 Aug 28  2024 named.empty
  10. -rw-r-----. 1 root  named  152 Aug 28  2024 named.localhost
  11. -rw-r-----. 1 root  named  168 Aug 28  2024 named.loopback
  12. drwxrwx---. 2 named named    6 Aug 28  2024 slaves
  13. [root@dns-master ~]# vim /var/named/mingyue.fanxiang
  14. [root@dns-master ~]# cat /var/named/mingyue.fanxiang
  15. $TTL        1D
  16. @        IN        SOA        ns1.mingyue.com.        root.mingyue.com. (0 1H 1D 1W 3D)
  17.         IN        NS        ns1.mingyue.com.
  18.         IN        NS        ns2
  19. ns1        IN        A        172.25.250.107
  20. ns2        IN        A        172.25.250.108
  21. 200        IN        PTR        www.mingyue.com.
  22. txt        IN        TXT        "AaBbCcDdEeFf"       
  23. [root@dns-master ~]# named-checkzone mingyue.com /var/named/mingyue.fanxiang
  24. zone mingyue.com/IN: loaded serial 0
  25. OK
复制代码
启动服务并测试

  1. [root@dns-master ~]# systemctl start named
  2. [root@dns-master ~]# dig -t NS mingyue.com @172.25.250.107
  3. ; <<>> DiG 9.16.23-RH <<>> -t NS mingyue.com @172.25.250.107
  4. ;; global options: +cmd
  5. ;; Got answer:
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14162
  7. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3
  8. ;; OPT PSEUDOSECTION:
  9. ; EDNS: version: 0, flags:; udp: 1232
  10. ; COOKIE: f082f46b7ee541bf0100000067fa0532ff3c047be69773cd (good)
  11. ;; QUESTION SECTION:
  12. ;mingyue.com.                        IN        NS
  13. ;; ANSWER SECTION:
  14. mingyue.com.                86400        IN        NS        ns1.mingyue.com.
  15. mingyue.com.                86400        IN        NS        ns2.mingyue.com.
  16. ;; ADDITIONAL SECTION:
  17. ns1.mingyue.com.        86400        IN        A        172.25.250.107
  18. ns2.mingyue.com.        86400        IN        A        172.25.250.108
  19. ;; Query time: 2 msec
  20. ;; SERVER: 172.25.250.107#53(172.25.250.107)
  21. ;; WHEN: Sat Apr 12 14:16:18 CST 2025
  22. ;; MSG SIZE  rcvd: 136
  23. [root@dns-master ~]# dig -t A www.mingyue.com @172.25.250.107
  24. ; <<>> DiG 9.16.23-RH <<>> -t A www.mingyue.com @172.25.250.107
  25. ;; global options: +cmd
  26. ;; Got answer:
  27. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10116
  28. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
  29. ;; OPT PSEUDOSECTION:
  30. ; EDNS: version: 0, flags:; udp: 1232
  31. ; COOKIE: 8529c23b6b32e1a60100000067fa0561d02e583eade8e231 (good)
  32. ;; QUESTION SECTION:
  33. ;www.mingyue.com.                IN        A
  34. ;; ANSWER SECTION:
  35. www.mingyue.com.        86400        IN        A        172.25.250.200
  36. ;; Query time: 0 msec
  37. ;; SERVER: 172.25.250.107#53(172.25.250.107)
  38. ;; WHEN: Sat Apr 12 14:17:05 CST 2025
  39. ;; MSG SIZE  rcvd: 88
  40. [root@dns-master ~]# dig -x 172.25.250.200 @172.25.250.107
  41. ; <<>> DiG 9.16.23-RH <<>> -x 172.25.250.200 @172.25.250.107
  42. ;; global options: +cmd
  43. ;; Got answer:
  44. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57737
  45. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
  46. ;; OPT PSEUDOSECTION:
  47. ; EDNS: version: 0, flags:; udp: 1232
  48. ; COOKIE: d8d9bf0abd0af37d0100000067fa0587155762c6e39574b9 (good)
  49. ;; QUESTION SECTION:
  50. ;200.250.25.172.in-addr.arpa.        IN        PTR
  51. ;; ANSWER SECTION:
  52. 200.250.25.172.in-addr.arpa. 86400 IN        PTR        www.mingyue.com.
  53. ;; Query time: 9 msec
  54. ;; SERVER: 172.25.250.107#53(172.25.250.107)
  55. ;; WHEN: Sat Apr 12 14:17:43 CST 2025
  56. ;; MSG SIZE  rcvd: 113
复制代码
设置从服务 DNS

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname dns-slave
  2. [root@localhost ~]# nmcli c modify ens160 ipv4.method manual  ipv4.addresses 172.25.250.108/24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
  3. [root@localhost ~]# nmcli c up ens160
复制代码
挂载堆栈并下载软件

  1. [root@dns-slave ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@dns-slave ~]# dnf -y install bind
复制代码
修改核心设置文件

  1. [root@dns-slave ~]# vim /etc/named.conf
  2. [root@dns-slave ~]# cat /etc/named.conf
  3. options {
  4.         listen-on port 53 { 172.25.250.108;172.25.250.100; };
  5.          directory       "/var/named";
  6. };
  7. zone "mingyue.com" IN {
  8.         type slave;
  9.         file "slaves/mingyue.zone";
  10.         masters { 172.25.250.107; };
  11.         allow-transfer  { none; };
  12. };
  13. zone "250.25.172.in.addr.arpa" IN {
  14.         type slave;
  15.         masters { 172.25.250.107; };
  16.         file "slaves/mingyue.fanxiang";
  17.         allow-transfer { none; };
  18. };
复制代码
查抄设置文件是否有误(没有消息提示分析设置文件修改没题目,如有根据提示修改设置文件)

  1. [root@dns-slave ~]# named-checkconf
复制代码
启动服务并测试(若是没有文件查抄防火墙是否关闭)

  1. [root@dns-slave ~]# ls /var/named/slaves
  2. [root@dns-slave ~]# systemctl start named
  3. [root@dns-slave ~]# ls /var/named/slaves/
  4. mingyue.fanxiang  mingyue.zone
  5. [root@dns-slave ~]# dig -t A www.mingyue.com @172.25.250.107
  6. ; <<>> DiG 9.16.23-RH <<>> -t A www.mingyue.com @172.25.250.107
  7. ;; global options: +cmd
  8. ;; Got answer:
  9. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64898
  10. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
  11. ;; OPT PSEUDOSECTION:
  12. ; EDNS: version: 0, flags:; udp: 1232
  13. ; COOKIE: ce420687d228d5b40100000067fa0d06077ab9fafd700f17 (good)
  14. ;; QUESTION SECTION:
  15. ;www.mingyue.com.                IN        A
  16. ;; ANSWER SECTION:
  17. www.mingyue.com.        86400        IN        A        172.25.250.200
  18. ;; Query time: 4 msec
  19. ;; SERVER: 172.25.250.107#53(172.25.250.107)
  20. ;; WHEN: Sat Apr 12 14:49:42 CST 2025
  21. ;; MSG SIZE  rcvd: 88
  22. [root@dns-slave ~]# dig -t A www.mingyue.com @172.25.250.108
  23. ; <<>> DiG 9.16.23-RH <<>> -t A www.mingyue.com @172.25.250.108
  24. ;; global options: +cmd
  25. ;; Got answer:
  26. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14843
  27. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
  28. ;; OPT PSEUDOSECTION:
  29. ; EDNS: version: 0, flags:; udp: 1232
  30. ; COOKIE: 137473cba75fd4b90100000067fa0d18e153428993edd1ef (good)
  31. ;; QUESTION SECTION:
  32. ;www.mingyue.com.                IN        A
  33. ;; ANSWER SECTION:
  34. www.mingyue.com.        86400        IN        A        172.25.250.200
  35. ;; Query time: 2 msec
  36. ;; SERVER: 172.25.250.108#53(172.25.250.108)
  37. ;; WHEN: Sat Apr 12 14:50:00 CST 2025
  38. ;; MSG SIZE  rcvd: 88
复制代码
搭建 web 服务

web01

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname web01
  2. [root@web01 ~]# ip ad
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  10.     link/ether 00:0c:29:68:31:7f brd ff:ff:ff:ff:ff:ff
  11.     altname enp3s0
  12.     inet 172.25.250.201/24 brd 172.25.250.255 scope global dynamic noprefixroute ens160
  13.        valid_lft 1753sec preferred_lft 1753sec
  14.     inet6 fe80::20c:29ff:fe68:317f/64 scope link noprefixroute
  15.        valid_lft forever preferred_lft forever
复制代码
挂载堆栈并下载软件

  1. [root@web01 ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@web01 ~]# dnf -y install nginx
复制代码
设置 nginx

  1. [root@web01 ~]# vim /etc/nginx/conf.d/web01.conf
  2. [root@web01 ~]# cat /etc/nginx/conf.d/web01.conf
  3. server {
  4.         listen          80;
  5.         server_name        www.mingyue.com;
  6.         root                /usr/share/nginx/html;
  7. }
复制代码
修改 DNS

  1. [root@web01 ~]# nmcli c modify ens160 ipv4.dns 172.25.250.100
  2. [root@web01 ~]# nmcli c up ens160
  3. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
  4. [root@web01 ~]# nmcli d show | grep DNS
  5. IP4.DNS[1]:                             172.25.250.100
复制代码
编写首页

  1. [root@web01 ~]# echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
复制代码
启动服务并测试

  1. [root@web01 ~]# systemctl start nginx
  2. [root@web01 ~]# curl localhost
  3. web01 - 172.25.250.201
复制代码
web02

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname web02
  2. [root@web02 ~]# ip ad
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  10.     link/ether 00:0c:29:7e:8e:dc brd ff:ff:ff:ff:ff:ff
  11.     altname enp3s0
  12.     inet 172.25.250.202/24 brd 172.25.250.255 scope global dynamic noprefixroute ens160
  13.        valid_lft 987sec preferred_lft 987sec
  14.     inet6 fe80::20c:29ff:fe7e:8edc/64 scope link noprefixroute
  15.        valid_lft forever preferred_lft forever
复制代码
挂载堆栈并下载软件

  1. [root@web02 ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@web02 ~]# dnf -y install nginx
复制代码
设置 nginx

  1. [root@web02 ~]# vim /etc/nginx/conf.d/web02.conf
  2. [root@web02 ~]# cat /etc/nginx/conf.d/web02.conf
  3. server {
  4.         listen                80;
  5.         server_name        www.mingiyue.com;
  6.         root                /usr/share/nginx/html;
  7. }
复制代码
修改 DNS

  1. [root@web02 ~]# nmcli c modify ens160 ipv4.dns 172.25.250.100
  2. [root@web02 ~]# nmcli c up ens160
  3. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
  4. [root@web02 ~]# nmcli d show ens160 | grep DNS
  5. IP4.DNS[1]:                             172.25.250.100
复制代码
编写首页

  1. [root@web02 ~]# echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
复制代码
启动服务并测试

  1. [root@web02 ~]# systemctl start nginx
  2. [root@web02 ~]# curl localhost
  3. web02 - 172.25.250.202
复制代码
web03

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname web03
  2. [root@web03 ~]# ip ad
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  5.     inet 127.0.0.1/8 scope host lo
  6.        valid_lft forever preferred_lft forever
  7.     inet6 ::1/128 scope host
  8.        valid_lft forever preferred_lft forever
  9. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  10.     link/ether 00:0c:29:12:a5:be brd ff:ff:ff:ff:ff:ff
  11.     altname enp3s0
  12.     inet 172.25.250.203/24 brd 172.25.250.255 scope global dynamic noprefixroute ens160
  13.        valid_lft 1027sec preferred_lft 1027sec
  14.     inet6 fe80::20c:29ff:fe12:a5be/64 scope link noprefixroute
  15.        valid_lft forever preferred_lft forever
复制代码
挂载堆栈并下载软件

  1. [root@web03 ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@web03 ~]# dnf -y install nginx
复制代码
设置 nginx

  1. [root@web03 ~]# vim /etc/nginx/conf.d/web03.conf
  2. [root@web03 ~]# cat /etc/nginx/conf.d/web03.conf
  3. server {
  4.         listen                80;
  5.         server_name        www.mingyue.com;
  6.         root                /usr/share/nginx/html;
  7. }
复制代码
修改 DNS

  1. [root@web03 ~]# nmcli c modify ens160 ipv4.dns 172.25.250.100
  2. [root@web03 ~]# nmcli c up ens160
  3. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
  4. [root@web03 ~]# nmcli d show ens160 | grep DNS
  5. IP4.DNS[1]:                             172.25.250.100
复制代码
编写首页

  1. [root@web03 ~]# echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
复制代码
启动服务并测试

  1. [root@web03 ~]# systemctl start nginx
  2. [root@web03 ~]# curl localhost
  3. web03 - 172.25.250.203
复制代码
搭建 Keepalived 和 LVS 

设置master

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname lb-master
  2. [root@localhost ~]# nmcli c modify ens160 ipv4.method manual  ipv4.addresses 172.25.250.105/24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
  3. [root@localhost ~]# nmcli c up ens160
复制代码
挂载堆栈并下载软件

  1. [root@lb-master ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@lb-master ~]# dnf -y install keepalived ipvsadm bind-utils
复制代码
设置 Keepalived

  1. [root@lb-master ~]# vim /etc/keepalived/keepalived.conf
  2. [root@lb-master ~]# cat /etc/keepalived/keepalived.conf
  3. global_defs {
  4.    router_id LVS_master
  5. }
  6. vrrp_instance VI_web {
  7.     state MASTER
  8.     interface ens160
  9.     virtual_router_id 51
  10.     priority 100
  11.     advert_int 1
  12.     authentication {
  13.         auth_type PASS
  14.         auth_pass 1111
  15.     }
  16.     virtual_ipaddress {
  17.         172.25.250.200
  18.     }
  19. }
  20. virtual_server 172.25.250.200 80 {
  21.     delay_loop 6
  22.     lb_algo wrr
  23.     lb_kind DR
  24.     protocol TCP
  25.     real_server 172.25.250.201 80 {
  26.         weight 3
  27.         TCP_CHECK{
  28.             connect_timeout 3
  29.             retry 3
  30.             delay_before_retry 3
  31.         }
  32.     }
  33.     real_server 172.25.250.202 80 {
  34.         weight 2
  35.         TCP_CHECK{
  36.             connect_timeout 3
  37.             retry 3
  38.             delay_before_retry 3
  39.         }
  40.     }
  41.     real_server 172.25.250.203 80 {
  42.         weight 1
  43.         TCP_CHECK{
  44.             connect_timeout 3
  45.             retry 3
  46.             delay_before_retry 3
  47.         }
  48.     }
  49. }
  50. vrrp_instance VI_dns {
  51.     state BACKUP
  52.     interface ens160
  53.     virtual_router_id 52
  54.     priority 80
  55.     advert_int 1
  56.     authentication {
  57.         auth_type PASS
  58.         auth_pass 1111
  59.     }
  60.     virtual_ipaddress {
  61.         172.25.250.100
  62.     }
  63. }
  64. virtual_server 172.25.250.100 53 {
  65.     delay_loop 6
  66.     lb_algo rr
  67.     lb_kind DR
  68.     protocol UDP
  69.     real_server 172.25.250.107 53 {
  70.         weight 1
  71.         MISC_CHECK {
  72.             connect_timeout 3
  73.             misc_path "/etc/keepalived/checkdns.sh -h 172.25.250.107 txt.chengke.com"
  74.         }
  75.     }
  76.     real_server 172.25.250.108 53 {
  77.         weight 1
  78.         MISC_CHECK {
  79.             connect_timeout 3
  80.             misc_path "/etc/keepalived/checkdns.sh -h 172.25.250.108 txt.chengke.com"
  81.         }
  82.     }
  83. }
复制代码
编写检测脚本文件并赋予权限

  1. [root@lb-master ~]# vim /etc/keepalived/checkdns.sh
  2. [root@lb-master ~]# cat /etc/keepalived/checkdns.sh
  3. #!/bin/bash
  4. [ $# -le 2 ] && { echo "usage: $0 -h <ip>"; exit 2; }
  5. domain=$3
  6. while getopts "h:" OPT; do
  7.         case $OPT in
  8.                 h)
  9.                         host=$OPTARG
  10.                         ;;
  11.                 *)
  12.                         echo "usage: $0 -h <ip>" && exit 1
  13.                         ;;
  14.         esac
  15. done
  16. dig @${host} txt ${domain} +time=1 | grep "\<AaBbCcDdEeFf\>" > /dev/null
  17. exit $?
  18. [root@lb-master ~]# chmod a+x /etc/keepalived/checkdns.sh
  19. [root@lb-master ~]# ll /etc/keepalived/checkdns.sh
  20. -rwxr-xr-x. 1 root root 411 Apr 12 15:41 /etc/keepalived/checkdns.sh
复制代码
启动服务

  1. [root@lb-master ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
  2. [root@lb-master ~]# systemctl start keepalived.service ipvsadm.service
  3. [root@lb-master ~]# ip a show ens160
  4. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  5.     link/ether 00:0c:29:22:88:c0 brd ff:ff:ff:ff:ff:ff
  6.     altname enp3s0
  7.     inet 172.25.250.105/24 brd 172.25.250.255 scope global noprefixroute ens160
  8.        valid_lft forever preferred_lft forever
  9.     inet 172.25.250.200/32 scope global ens160
  10.        valid_lft forever preferred_lft forever
  11.     inet6 fe80::20c:29ff:fe22:88c0/64 scope link noprefixroute
  12.        valid_lft forever preferred_lft forever
复制代码
查看 LVS 规则

 

  1. [root@lb-master ~]# ipvsadm -Ln
  2. IP Virtual Server version 1.2.1 (size=4096)
  3. Prot LocalAddress:Port Scheduler Flags
  4.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  5. TCP  172.25.250.200:80 wrr
  6.   -> 172.25.250.201:80            Route   3      0          0         
  7.   -> 172.25.250.202:80            Route   2      0          0         
  8.   -> 172.25.250.203:80            Route   1      0          0         
  9. UDP  172.25.250.100:53 rr
  10.   -> 172.25.250.107:53            Route   1      0          0         
  11.   -> 172.25.250.108:53            Route   1      0          0      
复制代码
设置backup

修改主机名和 IP 地址

  1. [root@localhost ~]# hostnamectl hostname lb-backup
  2. [root@localhost ~]# nmcli c modify ens160 ipv4.method manual  ipv4.addresses 172.25.250.106/24 ipv4.gateway 172.25.250.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
  3. [root@localhost ~]# nmcli c up ens160
复制代码
挂载堆栈并下载软件

  1. [root@lb-backup ~]# mount /dev/sr0 /mnt
  2. mount: /mnt: WARNING: source write-protected, mounted read-only.
  3. [root@lb-backup ~]# dnf -y install keepalived ipvsadm bind-utils
复制代码
复制 keepalived 的设置文件到 backup 主机中并修改

  1. [root@lb-master ~]# scp /etc/keepalived/keepalived.conf 172.25.250.106:/etc/keepalived
  2. The authenticity of host '172.25.250.106 (172.25.250.106)' can't be established.
  3. ED25519 key fingerprint is SHA256:zQRVAzxowh+vQParI9tLut0o4tqknS8RIH86Oa4QB/A.
  4. This key is not known by any other names
  5. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
  6. Warning: Permanently added '172.25.250.106' (ED25519) to the list of known hosts.
  7. root@172.25.250.106's password:
  8. keepalived.conf                                                                       100% 1652   287.3KB/s   00:00
  9. [root@lb-backup ~]# vim /etc/keepalived/keepalived.conf
  10. [root@lb-backup ~]# cat /etc/keepalived/keepalived.conf
  11. global_defs {
  12.    router_id LVS_backup
  13. }
  14. vrrp_instance VI_web {
  15.     state BACKUP
  16.     interface ens160
  17.     virtual_router_id 51
  18.     priority 80
  19.     advert_int 1
  20.     authentication {
  21.         auth_type PASS
  22.         auth_pass 1111
  23.     }
  24.     virtual_ipaddress {
  25.         172.25.250.200
  26.     }
  27. }
  28. virtual_server 172.25.250.200 80 {
  29.     delay_loop 6
  30.     lb_algo wrr
  31.     lb_kind DR
  32.     protocol TCP
  33.     real_server 172.25.250.201 80 {
  34.         weight 3
  35.         TCP_CHECK{
  36.             connect_timeout 3
  37.             retry 3
  38.             delay_before_retry 3
  39.         }
  40.     }
  41.     real_server 172.25.250.202 80 {
  42.         weight 2
  43.         TCP_CHECK{
  44.             connect_timeout 3
  45.             retry 3
  46.             delay_before_retry 3
  47.         }
  48.     }
  49.     real_server 172.25.250.203 80 {
  50.         weight 1
  51.         TCP_CHECK{
  52.             connect_timeout 3
  53.             retry 3
  54.             delay_before_retry 3
  55.         }
  56.     }
  57. }
  58. vrrp_instance VI_dns {
  59.     state MASTER
  60.     interface ens160
  61.     virtual_router_id 52
  62.     priority 100
  63.     advert_int 1
  64.     authentication {
  65.         auth_type PASS
  66.         auth_pass 1111
  67.     }
  68.     virtual_ipaddress {
  69.         172.25.250.100
  70.     }
  71. }
  72. virtual_server 172.25.250.100 53 {
  73.     delay_loop 6
  74.     lb_algo rr
  75.     lb_kind DR
  76.     protocol UDP
  77.     real_server 172.25.250.107 53 {
  78.         weight 1
  79.         MISC_CHECK {
  80.             connect_timeout 3
  81.             misc_path "/etc/keepalived/checkdns.sh -h 172.25.250.107 txt.chengke.com"
  82.         }
  83.     }
  84.     real_server 172.25.250.108 53 {
  85.         weight 1
  86.         MISC_CHECK {
  87.             connect_timeout 3
  88.             misc_path "/etc/keepalived/checkdns.sh -h 172.25.250.108 txt.chengke.com"
  89.         }
  90.     }
  91. }
复制代码
复制检测脚本文件到 backup 主机中

  1. [root@lb-master ~]# scp /etc/keepalived/checkdns.sh  172.25.250.106:/etc/keepalived
  2. root@172.25.250.106's password:
  3. checkdns.sh                                                                           100%  411    71.5KB/s   00:00   
  4. [root@lb-backup ~]# cd /etc/keepalived/
  5. [root@lb-backup keepalived]# ll
  6. total 8
  7. -rwxr-xr-x. 1 root root  411 Apr 12 15:46 checkdns.sh
  8. -rw-r--r--. 1 root root 1652 Apr 12 15:48 keepalived.conf
复制代码
启动服务

  1. [root@lb-backup ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
  2. [root@lb-backup ~]# systemctl start keepalived.service ipvsadm.service
  3. [root@lb-backup ~]# ip a show ens160
  4. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  5.     link/ether 00:0c:29:66:17:9c brd ff:ff:ff:ff:ff:ff
  6.     altname enp3s0
  7.     inet 172.25.250.106/24 brd 172.25.250.255 scope global noprefixroute ens160
  8.        valid_lft forever preferred_lft forever
  9.     inet 172.25.250.100/32 scope global ens160
  10.        valid_lft forever preferred_lft forever
  11.     inet6 fe80::20c:29ff:fe66:179c/64 scope link noprefixroute
  12.        valid_lft forever preferred_lft forever
复制代码
查看 LVS 规则

  1. [root@lb-backup ~]# ipvsadm -Ln
  2. IP Virtual Server version 1.2.1 (size=4096)
  3. Prot LocalAddress:Port Scheduler Flags
  4.   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  5. TCP  172.25.250.200:80 wrr
  6.   -> 172.25.250.201:80            Route   3      0          0         
  7.   -> 172.25.250.202:80            Route   2      0          0         
  8.   -> 172.25.250.203:80            Route   1      0          0         
  9. UDP  172.25.250.100:53 rr
  10.   -> 172.25.250.107:53            Route   1      0          0         
  11.   -> 172.25.250.108:53            Route   1      0          0      
复制代码
DNS 服务器增长 VIP 和设置内核参数

主服务器

增长 VIP

  1. [root@dns-master ~]# ifconfig lo:0 172.25.250.100 netmask 255.255.255.255 up
  2. [root@dns-master ~]# route add -host 172.25.250.100 dev lo:0
  3. [root@dns-master ~]# ip a
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  5.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  6.     inet 127.0.0.1/8 scope host lo
  7.        valid_lft forever preferred_lft forever
  8.     inet 172.25.250.100/32 scope global lo:0
  9.        valid_lft forever preferred_lft forever
  10.     inet6 ::1/128 scope host
  11.        valid_lft forever preferred_lft forever
复制代码
设置内核参数

  1. [root@dns-master ~]# vim /etc/sysctl.conf
  2. [root@dns-master ~]# cat /etc/sysctl.conf
  3. net.ipv4.conf.lo.arp_ignore = 1
  4. net.ipv4.conf.lo.arp_announce = 2
  5. net.ipv4.conf.all.arp_ignore = 1
  6. net.ipv4.conf.all.arp_announce = 2
  7. [root@dns-master ~]# sysctl -p
  8. net.ipv4.conf.lo.arp_ignore = 1
  9. net.ipv4.conf.lo.arp_announce = 2
  10. net.ipv4.conf.all.arp_ignore = 1
  11. net.ipv4.conf.all.arp_announce = 2
复制代码
从服务器

增长 VIP

  1. [root@dns-slave ~]#  ifconfig lo:0 172.25.250.100 netmask 255.255.255.255 up
  2. [root@dns-slave ~]# route add -host 172.25.250.100 dev lo:0
  3. [root@dns-slave ~]# ip a
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  5.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  6.     inet 127.0.0.1/8 scope host lo
  7.        valid_lft forever preferred_lft forever
  8.     inet 172.25.250.100/32 scope global lo:0
  9.        valid_lft forever preferred_lft forever
  10.     inet6 ::1/128 scope host
  11.        valid_lft forever preferred_lft forever
复制代码
设置内核参数

  1. [root@dns-slave ~]# vim /etc/sysctl.conf   
  2. [root@dns-slave ~]# cat /etc/sysctl.conf
  3. net.ipv4.conf.lo.arp_ignore = 1
  4. net.ipv4.conf.lo.arp_announce = 2
  5. net.ipv4.conf.all.arp_ignore = 1
  6. net.ipv4.conf.all.arp_announce = 2
  7. [root@dns-slave ~]# sysctl -p
  8. net.ipv4.conf.lo.arp_ignore = 1
  9. net.ipv4.conf.lo.arp_announce = 2
  10. net.ipv4.conf.all.arp_ignore = 1
  11. net.ipv4.conf.all.arp_announce = 2
复制代码
修改 web 服务器

web01

增长 VIP

  1. [root@web01 ~]# ifconfig lo:0 172.25.250.200 netmask 255.255.255.255 up
  2. [root@web01 ~]# route add -host 172.25.250.200 dev lo:0
  3. [root@web01 ~]# ip a
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  5.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  6.     inet 127.0.0.1/8 scope host lo
  7.        valid_lft forever preferred_lft forever
  8.     inet 172.25.250.200/32 scope global lo:0
  9.        valid_lft forever preferred_lft forever
  10.     inet6 ::1/128 scope host
  11.        valid_lft forever preferred_lft forever
  12. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  13.     link/ether 00:0c:29:68:31:7f brd ff:ff:ff:ff:ff:ff
  14.     altname enp3s0
  15.     inet 172.25.250.201/24 brd 172.25.250.255 scope global dynamic noprefixroute ens160
  16.        valid_lft 1420sec preferred_lft 1420sec
  17.     inet6 fe80::20c:29ff:fe68:317f/64 scope link noprefixroute
  18.        valid_lft forever preferred_lft forever
复制代码
设置内核参数

  1. [root@web01 ~]# vim /etc/sysctl.conf
  2. [root@web01 ~]# sysctl -p
  3. net.ipv4.conf.all.arp_ignore = 1
  4. net.ipv4.conf.lo.arp_ignore = 1
  5. net.ipv4.conf.all.arp_announce = 2
  6. net.ipv4.conf.lo.arp_announce = 2
  7. net.ipv4.ip_forward = 0
复制代码
web02

增长 VIP

  1. [root@web02 ~]# ifconfig lo:0 172.25.250.200 netmask 255.255.255.255 up
  2. [root@web02 ~]# route add -host 172.25.250.200 dev lo:0
  3. [root@web02 ~]# ip a
  4. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  5.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  6.     inet 127.0.0.1/8 scope host lo
  7.        valid_lft forever preferred_lft forever
  8.     inet 172.25.250.200/32 scope global lo:0
  9.        valid_lft forever preferred_lft forever
  10.     inet6 ::1/128 scope host
  11.        valid_lft forever preferred_lft forever
  12. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  13.     link/ether 00:0c:29:7e:8e:dc brd ff:ff:ff:ff:ff:ff
  14.     altname enp3s0
  15.     inet 172.25.250.202/24 brd 172.25.250.255 scope global dynamic noprefixroute ens160
  16.        valid_lft 1477sec preferred_lft 1477sec
  17.     inet6 fe80::20c:29ff:fe7e:8edc/64 scope link noprefixroute
  18.        valid_lft forever preferred_lft forever
复制代码
设置内核参数

  1. [root@web02 ~]# vim /etc/sysctl.conf
  2. [root@web02 ~]# sysctl -p
  3. net.ipv4.conf.all.arp_ignore = 1
  4. net.ipv4.conf.lo.arp_ignore = 1
  5. net.ipv4.conf.all.arp_announce = 2
  6. net.ipv4.conf.lo.arp_announce = 2
  7. net.ipv4.ip_forward = 0
复制代码
web03

增长 VIP

  1. [root@web03 ~]# ip a
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet 172.25.250.200/32 scope global lo:0
  7.        valid_lft forever preferred_lft forever
  8.     inet6 ::1/128 scope host
  9.        valid_lft forever preferred_lft forever
  10. 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  11.     link/ether 00:0c:29:12:a5:be brd ff:ff:ff:ff:ff:ff
  12.     altname enp3s0
  13.     inet 172.25.250.203/24 brd 172.25.250.255 scope global dynamic noprefixroute ens160
  14.        valid_lft 1612sec preferred_lft 1612sec
  15.     inet6 fe80::20c:29ff:fe12:a5be/64 scope link noprefixroute
  16.        valid_lft forever preferred_lft forever
复制代码
设置内核参数

  1. [root@web03 ~]# vim /etc/sysctl.conf
  2. [root@web03 ~]# sysctl -p
  3. net.ipv4.conf.all.arp_ignore = 1
  4. net.ipv4.conf.lo.arp_ignore = 1
  5. net.ipv4.conf.all.arp_announce = 2
  6. net.ipv4.conf.lo.arp_announce = 2
  7. net.ipv4.ip_forward = 0
复制代码
测试

  1. [root@client ~]# curl 172.25.250.200
  2. web03 - 172.25.250.203
  3. [root@client ~]# curl 172.25.250.200
  4. web02 - 172.25.250.202
  5. [root@client ~]# curl 172.25.250.200
  6. web01 - 172.25.250.201
  7. [root@client ~]# curl 172.25.250.200
  8. web01 - 172.25.250.201
  9. [root@client ~]# curl 172.25.250.200
  10. web02 - 172.25.250.202
  11. [root@client ~]# curl 172.25.250.200
  12. web01 - 172.25.250.201
  13. [root@client ~]# curl 172.25.250.200
  14. web03 - 172.25.250.203
  15. [root@client ~]# curl 172.25.250.200
  16. web02 - 172.25.250.202
复制代码
服务搭建完成!!!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表