lvs DR模式,一键部署脚本:
    在这个脚本VIP和RIP等都是可以自定义的。并且脚本可以根据主机名自动的判断是配置vip和rip,即实现一个脚本到处执行。

    1. #!/bin/bash
    2. #by zyz
    3. #############################
    4. # 获取主机名
    5. HOSTNAME=`hostname`
    6. # 设置VIP和RIP的主机名变量
    7. VIP_HOSTNAME="LVS-72-200"
    8. RIP_HOSTNAME_1="RIP-72-127"
    9. RIP_HOSTNAME_2="RIP-72-128"
    10. VIP=192.168.72.200
    11. RIP1=192.168.72.127
    12. RIP2=192.168.72.128
    13. PORT=80
    14. # VIP服务器的VIP子网卡
    15. VIP_INTERFACE=ens32:1
    16. # 后端服务器的lo子网卡
    17. LO_INTERFACE=lo:1
    18. # VIP和RIP出去的网关,该网关为路由器的内网地址
    19. GATEWAY=192.168.72.130
    20. # 配置LVS:
    21. if [ "$HOSTNAME" = "$VIP_HOSTNAME" ];then
    22. case "$1" in
    23. start)
    24. ping -c2 $VIP &>/dev/null
    25. if [ $? -ne 0 ];then
    26. cd /etc/sysconfig/network-scripts/
    27. cat > ifcfg-$VIP_INTERFACE <<-EOF
    28. TYPE="Ethernet"
    29. BOOTPROTO="none"
    30. DEVICE="${VIP_INTERFACE}"
    31. ONBOOT="yes"
    32. IPADDR=$VIP
    33. PREFIX=24
    34. GATEWAY=$GATEWAY
    35. EOF
    36. ifup ${VIP_INTERFACE}
    37. # 设置VIP虚拟服务器
    38. /usr/sbin/ipvsadm -A -t $VIP:$PORT -s rr
    39. for i in $RIP{1..2};do
    40. /usr/sbin/ipvsadm -a -t $VIP:$PORT -r ${i}
    41. done
    42. echo -e "\nVIP服务部署成功!配置如下:\n`ipvsadm -ln`"
    43. else
    44. echo "检查VIP是否已经被使用!"
    45. fi
    46. ;;
    47. stop)
    48. /usr/sbin/ipvsadm -D -t $VIP:$PORT
    49. cd /etc/sysconfig/network-scripts/
    50. ifdown ${VIP_INTERFACE} &>/dev/null
    51. rm -rf ifcfg-${VIP_INTERFACE}
    52. route del default gw $GATEWAY &>/dev/null
    53. echo "VIP service stopped!"
    54. ;;
    55. status)
    56. ipvsadm -ln
    57. ;;
    58. *)
    59. echo "Usage: $0 {start|stop|status}"
    60. ;;
    61. esac
    62. # 配置RIP
    63. elif [ "$HOSTNAME" = "$RIP_HOSTNAME_1" ];then
    64. case "$1" in
    65. start)
    66. cd /etc/sysconfig/network-scripts/
    67. cat > ifcfg-$LO_INTERFACE <<-EOF
    68. DEVICE=$LO_INTERFACE
    69. IPADDR=$VIP
    70. NETMASK=255.255.255.255
    71. ONBOOT=yes
    72. NAME=loopback
    73. EOF
    74. ifdown $LO_INTERFACE &>/dev/null && ifup ${LO_INTERFACE}
    75. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    76. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    77. route add default gw $GATEWAY &>/dev/null
    78. ;;
    79. stop)
    80. ifdown $LO_INTERFACE &>/dev/null
    81. cd /etc/sysconfig/network-scripts/
    82. rm -rf ifcfg-$LO_INTERFACE
    83. route del default gw $GATEWAY &>/dev/null
    84. ;;
    85. status)
    86. echo "VIP: `ip a | awk '/lo:1/{print $2}'`"
    87. echo "GATEWAY: `route -n | awk 'NR==3{print $2}'`"
    88. ;;
    89. *)
    90. echo "$0: Usage: $0 {start|status|stop}"
    91. exit 1
    92. ;;
    93. esac
    94. elif [ "$HOSTNAME" = "$RIP_HOSTNAME_2" ];then
    95. case "$1" in
    96. start)
    97. cd /etc/sysconfig/network-scripts/
    98. cat > ifcfg-$LO_INTERFACE <<-EOF
    99. DEVICE=$LO_INTERFACE
    100. IPADDR=$VIP
    101. NETMASK=255.255.255.255
    102. ONBOOT=yes
    103. NAME=loopback
    104. EOF
    105. ifdown $LO_INTERFACE &>/dev/null && ifup ${LO_INTERFACE}
    106. echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    107. echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    108. route add default gw $GATEWAY &>/dev/null
    109. ;;
    110. stop)
    111. ifdown $LO_INTERFACE &>/dev/null
    112. cd /etc/sysconfig/network-scripts/
    113. rm -rf ifcfg-$LO_INTERFACE
    114. ;;
    115. status)
    116. echo "VIP: `ip a | awk '/lo:1/{print $2}'`"
    117. echo "GATEWAY: `route -n | awk 'NR==3{print $2}'`"
    118. ;;
    119. *)
    120. echo "$0: Usage: $0 {start|status|stop}"
    121. exit 1
    122. ;;
    123. esac
    124. fi