标签:web服务器 软件包 负载能力 d3d sync lvs html ipvsadm 共享存储
群集的含义负载均衡的工作模式
。
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
.
lvs的负载调度算法
.[root@localhost ~]# yum -y install ipvsadm
.
.
负载均衡的结构
.
.
.
.
搭建LVS群集(NAT模式)
搭建lvs群集,lvs负载调度器有两块网卡,是所有内部web服务器的网关服务器,需要为负载调度器配置SNAT,以便内部的服务器可以访问internet,所有的节点服务器、共享存储位于私有网络,网关指向负载调度器的192.168.7.254
.
具体环境如下;
NFS:192.168.7.250/24
web节点A:192.168.7.21/24
web节点B:192.168.7.22/24
LVS:eth0 192.168.7.254/24
:eth1 172.16.16.172/24
客户机:172.16.16.1 指向lvs
.
搭建NFS服务器(网关指向lvs)
安装nfs-utils(用来发布共享和访问)和rpcbind(用于RPC支持)
挂载光盘,先删除原有yum文件不然无法生效
.
[root@centos1 /]# mount /dev/cdrom /media/
[root@centos1 /]# rm -rf /etc/yum.repos.d/*
[root@centos1 /]# vim /etc/yum.repos.d/index.repo
[root@centos1 /]# yum -y install nfs-utils rpcbind
.
[root@centos1 /]# vim /etc/yum.repos.d/index.repo
[local]
name=lijialiang
baseurl=file:///media
enabled=1
gpgcheck=0
.
搭建NFS服务器
安装nfs-utils(用来发布共享和访问)和rpcbind(用于RPC支持)
[root@centos1 /]# yum -y install nfs-utils rpcbind
[root@centos1 /]# chkconfig nfs on
[root@centos1 /]# chkconfig rpcbind on
.
设置共享目录
将文件夹/opt/wwwroot共享给内部的web服务器节点使用,命令如下:
[root@centos1 /]# mkdir -p /opt/wwwroot
[root@centos1 /]# vi /etc/exports
/opt/wwwroot 192.168.7.0/24(rw,sync,no_root_squash)
rw:读写,sync:允许同步写入,no_root_squash:客户机以root身份访问时赋予本地root权限。
.
启动NFS服务程序
[root@centos1 /]# service rpcbind start
[root@centos1 /]# service nfs start
[root@centos1 /]# netstat -anpt | grep rpcind
[root@centos1 /]# netstat -anpt | grep rpcbind
.
查看本机发布的NFS共享目录
[root@centos1 /]# showmount -e 192.168.7.250
开防火墙例外
[root@centos1 /]# iptables -I INPUT -p tcp -j ACCEPT
[root@centos1 /]# iptables -I INPUT -p udp -j ACCEPT
.
.
在webA挂载光盘。配置yum
[root@centos1 /]# mount /dev/cdrom /media
[root@centos1 /]# rm -rf /etc/yum.repos.d/*
[root@centos1 /]# vim /etc/yum.repos.d/index.repo
.
.
在web节点A上访问NFS共享资源(网关指向lvs)
若要正常访问NFS共享资源,客户机中也需要安装rpcbind软件包,并启动服务器,如果想使用showmount查询共享,也需要安装nfs-utils软件包,总之和服务器一样都装上吧。
[root@centos1 /]# yum -y install nfs-utils rpcbind
.
启动rpcbind和nfs
[root@centos1 /]# service rpcbind start
[root@centos1 /]# service nfs start
[root@centos1 /]# showmount -e 192.168.7.250
.
在两台节点服务器上安装nginx,并开启nginx服务
[root@centos1 /]# yum -y install pcre-devel zlib-devel
切换光盘挂在nginx
[root@centos1 /]# umount /dev/cdrom /media/
[root@centos1 /]# mount /dev/cdrom /media/
[root@centos1 /]# tar zxf nginx-1.6.2.tar.gz -C /usr/src/
[root@centos1 /]# cd /usr/src/nginx-1.6.2/
[root@centos1 /]# useradd -M -s /sbin/nologin nginx
[root@centos1 /]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
[root@centos1 /]# /usr/local/nginx/sbin/nginx
.
在web节点A上挂载共享目录到本地的nginx网站主目录
[root@centos1 /]# mount -t nfs 192.168.7.250:/opt/wwwroot /usr/local/nginx/html/
[root@centos1 /]# cd /usr/local/nginx/html/
.
查看发现有index.html文件说明已同步
[root@centos1 /]# ls
.
设置自动挂载
[root@centos1 /]# vi /etc/fstab
192.168.7.250:/opt/wwwroot /usr/local/nginx/html nfs defaults,_netdev 0 0
.
[root@centos1 /]# iptables -I INPUT -p tcp -j ACCEPT
[root@centos1 /]# iptables -I INPUT -p udp -j ACCEPT
为了方便测试效果,web节点B的就不挂载NFS了,保持默认的nginx主页,然后在客户端上测试,访问两次,网页都不一样,实现了负载均衡群集。注意测试的时候把两台web节点的网关指向调度器,防火墙开启80端口或者关闭,然后把调度器的防火墙开启FORWARD和INPUT允许80端口。
.
webB和A操作相同但是为了测试不做挂载
.
.
在(lvs)上配置
挂载配置yum
[root@centos1 /]# mount /dev/cdrom /media/
[root@centos1 /]# rm -rf /etc/yum.repos.d/*
[root@centos1 /]# vim /etc/yum.repos.d/index.repo
.
配置负载调度器
在调度器上安装ipvsadm软件包
[root@centos1 /]# yum -y install ipvsadm
.
配置SNAT转发规则
[root@centos1 /]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@centos1 /]# sysctl -p
.
[root@centos1 /]# iptables -t nat -I POSTROUTING -s 192.168.7.0/24 -o eth1 -j SNAT --to-source 172.16.16.172
.
配置负载分配策略,主要目的是把web节点添加到调度器里面
[root@centos1 /]# service ipvsadm stop
[root@centos1 /]# ipvsadm -A -t 172.16.16.172:80 -s rr
[root@centos1 /]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
[root@centos1 /]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m -w 1
[root@centos1 /]# service ipvsadm save
[root@centos1 /]# chkconfig ipvsadm on
.
测试LVS群集
查看负载调度器
[root@centos1 /]# ipvsadm -ln
[root@centos1 /]# iptables -I FORWARD -p tcp -j ACCEPT
[root@centos1 /]# iptables -I INPUT -p tcp -j ACCEPT
.
测试是否访问成功
.
.
搭建LVS群集(路由模式)
这种模式的群集中,lvs负载调度器作为群集的入口,但不做网关使用了,web服务器节点都各自接入internet,发送给客户机的web相应数据包不经过lvs负载调度器。
.
环境如下;
NFS:192.168.7.250/24
web节点A:eth0:192.168.7.21/24
:eth1:172.16.16.177/24
web节点A:eth0:192.168.7.22/24
:eth1:172.16.16.178/24
LVS:172.16.16.173/24
客户机:172.16.16.1
.
配置节点服务器
使用DR模式时,节点服务器也需要配置VIP地址,因为客户端请求的是群集IP地址,目标MAC地址是LVS的,节点服务器回应时应该以群集IP回应,否则客户端不能成功接收。还需要调整内核的ARP响应参数阻止更新VIP的MAC地址,因为客户端在发送ARP请求的时候IP地址是群集地址,这是所有的节点都配置了VIP,这时客户端的ARP缓存内就会出现多条重复的IP地址对应的MAC地址确不相同,这回导致客户端无法正确找到调度器。
.
在节点(A,B)上配置虚拟ip地址v1
[root@centos1 /]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.16.172
NETMASK=255.255.255.255
ONBOOT=yes
[root@centos1 /]# cd /etc/sysconfig/network-scripts/
[root@centos1 /]# ifup lo:0
[root@centos1 /]# ifconfig lo:0
.
添加vip本地访问路由
[root@centos1 /]# vim /etc/rc.local
/sbin/route add -host 172.16.16.172 dev lo:0 //永久生效
[root@centos1 /]# route add -host 172.16.16.172 dev eth0 //临时生效
[root@centos1 /]# route add -host 172.16.16.172 dev lo:0
.
调整/proc响应参数
vim /etc/sysctl.conf,添加6行
[root@centos1 /]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
.
[root@centos1 /]# sysctl -p
.
.
.
配置调度器v8
配置虚拟ip地址(vip)
[root@centos1 /]# cd /etc/sysconfig/network-scripts/
[root@centos1 /]# cp ifcfg-eth0 ifcfg-eth0:0
[root@centos1 /]# vi ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.16.16.172
NETMASK=255.255.255.0
.
执行:ifup eth0:0
[root@centos1 /]# service network restart
.
调整/proc响应参数
因为lvs负载调度器和各节点需要共用vip地址,应该关闭linux内核重定向参数响应,打开vi /etc/sysctl.conf,增加三行。
[root@centos1 /]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
.
执行Sysctl -p
配置负载分配策略
[root@centos1 /]# sysctl -p
[root@centos1 /]# service ipvsadm stop
[root@centos1 /]# ipvsadm -A -t 172.16.16.172:80 -s rr
[root@centos1 /]# ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.177:80 -g -w 1
[root@centos1 /]# ipvsadm -a -t 172.16.16.172:80 -r 172.16.16.178:80 -g -w 1
[root@centos1 /]# service ipvsadm save
[root@centos1 /]# chkconfig ipvsadm on
.
在客户端上测试,每次打开浏览器访问的页面在两台web服务器之间切换就对了。在实际工作中两个web节点上的网页要保持一致,这样就能始终访问一个相同的网站,从而能实现负载均衡。
.
标签:web服务器 软件包 负载能力 d3d sync lvs html ipvsadm 共享存储
原文地址:http://blog.51cto.com/13555423/2065299