lvs分爲DR/NAT/TUN,3種模式,相信你們都瞭解了,可是有些網站網絡環境比較複雜,不少網段、各服務之間又有互相調用、兩地機房又有×××,那麼以上說起的3中模式都難以適應此環境。linux
所以,我介紹下centos下,iptables+LVS/NAT實現SNAT模式,以解決以上提出的問題,下面先說下原理:vim
當訪問到LVS,iptables會根據規則把訪問的源IP改爲指定ip,而後交給LVS處理,lvs會根據標準的nat模式把目標地址改成realserver,realserver回覆數據到LVS,修改回源、目標地址返回給用戶,因爲客戶端回包老是通過LVS服務器。所以,適用於大多數環境,同時因爲以上緣由後端服務器(realserver)是獲取不到用戶IP的。後端
好,下面說說如何搭建:centos
須要軟件包:bash
iptables-1.4.20.tar.bz2 ipvsadm-1.26.tar.gz linux-3.2.29.tar.gz keepalived-1.2.7.tar.gz服務器
安裝步驟:網絡
#準備編譯環境 rpm -ivh epel-release-6-8.noarch.rpm yum install popt popt-devel libnl libnl-devel popt-static gcc openssl openssl-devel
#編譯內核 cd /usr/src wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.29.tar.gz tar zxvf linux-3.2.29.tar.gz cd linux-3.2.29 #------.config 生成方法------ # make oldconfig # CONFIG_NETFILTER_XT_MATCH_IPVS=m (手動選擇) # 修改文件 .config # 添加下列3行 # CONFIG_SYSFS_DEPRECATED=y # CONFIG_SYSFS_DEPRECATED_V2=y #------------------- make all -j 16 make modules_install make install #修改配置重新內核啓動 vi /etc/grub.conf reboot
#編譯安裝iptables cd .. tar jxvf iptables-1.4.20.tar.bz2 cd iptables-1.4.20 ./configure make make install cp libxtables/.libs/libxtables.so.10 /lib cp /usr/local/sbin/iptables /sbin/ cp /usr/local/sbin/iptables-restore /sbin/ cp /usr/local/sbin/iptables-save /sbin/ service iptables restart
#編譯安裝ipvsadmin cd .. tar zxvf ipvsadm-1.26.tar.gz cd ipvsadm-1.26 make make install
#編譯安裝keepalived cd .. tar zxvf keepalived-1.2.7.tar.gz cd keepalived-1.2.7 ./configure make make install cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/sbin/keepalived /usr/sbin/ mkdir /etc/keepalived #修改keepalived配置,使用表裝的NAT模式 vim /etc/keepalived/keepalived.conf
#修改sysctl.conf及模塊配置文件 net.ipv4.ip_forward = 1 net.ipv4.vs.conntrack = 1 echo "modprobe ip_vs" > /etc/sysconfig/modules/lvs.modules #重啓(重新內核啓動)
#配置iptables #例如www.abc.com解析爲192.168.131.205; #並在LVS服務器192.168.131.204,中配置NAT模式; #服務器192.168.131.1 這臺機器要經過192.168.131.205訪問此站點; #那麼就須要配置iptables。 iptables -t nat -A POSTROUTING -m ipvs \ --vaddr 192.168.131.205/32 \ --vport 80 -j SNAT --to-source 192.168.131.204
至此,centos 下安裝配置 iptables+keepalived+lvs/nat 實現LVS/SNAT 配置完成
ide