标签:负载均衡
使用NAT模型的TCP协议类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;
首先了解nat模型:用户端,通过访问172.16.0.146端口,调度器会将请求随机转换到,后端的连个服务器,本次采用轮回调度的方式
在调度器上的,配置
a.创建集群服务,并添加服务器
[root@www ~]# ipvsadm -A -t 172.16.0.146:80 -s rr [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.100:80 -m [root@www ~]# ipvsadm -a -t 172.16.0.146:80 -r 192.168.100.200:8000 -m
b.开启此主机的核心转发功能
[root@www ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
4.服务器上的配置,192.168.100.100服务器上配置,安装httpd,php,php-mysql,mysql-server
a.为此主机配置,phpmyadmin服务,并在资源目录下做测试页面index.html
<VirtualHost 192.168.100.100:80> ServerName www.admin.com DocumentRoot "/myweb/admin/" <Directory "/myweb/admin/"> Options None AllowOverRide None Order deny,allow Allow from all </Directory> </VirtualHost>
b.给此服务器的数据库创建新用户并授权
mysql> grant all on *.* to 'wang'@'localhost' identifide by '111111';
c.修改此主机的防火墙策略,让此服务器可以给调度器的请求做响应
d.给此主机做默认网关,网关为192.168.100.1
[root@localhost ~]# route add default gw 192.168.100.1
5.给192.168.100.200:8000服务器也做同样的操作
6.在客户端172.16.0.150做网关172.16.0.146,并对调度器进行访问测试
[root@localhost ~]# for i in {1..10};do curl 172.16.0.146/index.html;done 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80 192.168.100.200:8000 192.168.100.100:80
7。使用网页访问phpmyadmin,因为没有建立持久连接,所以会一直保留在此页面上,
但是在调度器上,使用ipvsadm -ln,可以看到,后端real server被访问的次数,每登录一次则,会自动跳到另一个服务器
8.当我们建立持久连接时,则可以访问此程序,为了显示更直观,俩台服务器,数据库不同
因为长连接是有时间限制的,所以我们需要等一段时间,然后重新访问,可以看到数据库发生变化,证明负载均衡成功
9.为了使俩个服务器提供内容一样,需要做数据库共享;
使用samba,做目录共享,共享/mydata目录,并赋予mysql用户写权限,同时在文件系统上让/mydata文件系统对mysql用户有写权限,将192.168.100.100服务器的数据库复制到/mydata下,使用192.168.100.200,用mysql用户挂载到/data/下
[root@bogon ~]# mount -t cifs -o username=mysql //192.168.100.100/discuz /data
更改192.168.100.200数据库目录,修改/etc/my.cnf的datadir=/data
重启mysql服务,这样无论使用哪台服务器访问,都是同一个数据库
2.使用DR模型的FWM类型的lvs服务负载均衡一个php应用,如Discuz!论坛或者phpMyAdmin;
所谓FWM类型,是利用防火墙标记进行,然后利用此标记填加集群服务
所谓DR模型:是对报文的MAC地址进行重新封装,转发,但在整个过程中ip地址,端口号不会发生变化
----DR原理简析:
客户端向调度器VIP发送请求报文
调度器会对请求报文重新封装,使得源MAC地址变为DIP,目标MAC地址为后端RIP
后端的real server,将请求报文解封装后,对资源进行处理
后端real server在发送响应报文时,不再通过调度器,发送给客户端,而是利用自己的环回接口为VIP的地址进行相应给客户端
a.首先观察其拓扑图
b.对调度器进行设置:
1.设置DIP与VIP,DIP和VIP在同一个网卡上,且VIP应该设在标签端口上(保证DIP和VIP是同一个MAC地址)
2.做防火墙标记,在mangle表上标记
3.使用该标记做集群服务
4.给集群添加服务器
[root@localhost ~]# iptables -t mangle -A PREROUTING -d 172.16.0.150 -p tcp --dport 80 -j MARK --set-mark 2 localhost ~]# ipvsadm -A -f 2 -s rr [root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.151 -g -w 1 [root@localhost ~]# ipvsadm -a -f 2 -r 172.16.0.152 -g -w 1 [root@localhost ~]#
c.对real server的配置:
1.配置相应的RIP
2.在环回接口上配置VIP,
3.配置http,php,mysql服务
4.设置合理的安全策略
5.修改内核参数
6.给lo接口做特定路由
13 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore //只响应目的IP地址为接收网卡上的本地地址的ARP请求 14 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 15 echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 16 echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce //忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为ARP请求的源IP地址 17 route add -host 172.16.72.254 dev lo:0 //使响应报文从lo:0标签接口向外封装发送数据
d.同样使用客户端先进行测试访问
e.建立长连接
f.使用网页进行测试访问
注意:使用网页访问时,应该使用VIP作为目标IP
添加集群服务器时,后端real server 不可以添加端口
标签:负载均衡
原文地址:http://blog.51cto.com/wangchaode/2126600