lvs+keepalived+nginx 本地架设高度可伸缩高可用服务器负载集群配置方法

by pxz


发布于: 2017-05-13 所属分类: 服务器 nginx 标签: 高可用 负载 集群  375


<p><strong>一. 配置前准备四台服务器</strong>(这四台机可以是真实的, 也可以是虚拟机, 这里使用vagrant配置四台虚拟机, 配置方法参考《<a href="/article/87.html">vagrant 单配置多机器配置示例</a>》)</p> <ol> <li>负载均衡-主机 (静态ip: 192.168.33.10)</li><li>负载均衡-备机 (静态ip: 192.168.33.11)</li><li>web服务器A (静态ip: 192.168.33.12)</li><li>web服务器B (静态ip: 192.168.33.13)</li></ol> <p><strong>二. 负载均衡-主机配置</strong></p> <p>1 . 安装keepalived<br><code>yum install -y keepalived</code><br>2 . 配置keepalived</p> <pre><code>! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL #lvs的id, 主机跟备机必须相同 } vrrp_instance VI_1 { state MASTER #指定keepalived角色, MASTER为主BACKUP为备 interface eth0 virtual_router_id 51 #虚拟路由id, 主备必须相同 priority 100 advert_int 1 #检查间隔1s authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.30.200 #定义虚拟ip, 可设多个 } } virtual_server 192.168.30.200 80 { delay_loop 6 #键康检查时间 lb_algo rr #设度算法 lb_kind DR #负载机制, 有NAT TUN DR三种 nat_mask 255.255.255.0 persistence_timeout 0 #多长时间内转发客户端的请求到同一台服务器, 这里为了测试改成0 protocol TCP real_server 192.168.33.12 80 { #第一台web主机 weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.33.13 80 { #第二台web主机 weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } </code></pre><p>3 . 启动keepalived<br><code>service keepalived start</code></p> <p><strong>三. 负载均衡-备机配置</strong><br>备机配置与主机配置大致相同,只需要在keepalived的配置文件中改动以下两处:</p> <ol> <li><p>将state由MASTER改为BACKUP</p> </li><li><p>将priority由100改为99</p> </li></ol> <p><strong>四. weba服务器配置</strong></p> <p>1 . 配置realserver</p> <p><code>cd /etc/init.d/;</code></p> <p><code>vim realserver;</code> 把以下内容复制进去, 保存即可</p> <pre><code>SNS_VIP=192.168.33.200 /etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP /sbin/route add -host $SNS_VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" ;; stop) ifconfig lo:0 down route del $SNS_VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0 </code></pre><p>2 . 启动realserver</p> <p><code>service realserver start</code></p> <p>3 . 安装nginx</p> <p><code>yum install -y nginx</code></p> <p>4 . 修改nginx主页</p> <p><code>vim /usr/share/nginx/html/index.html;</code> 清空所有内容, 用weba 代替 方便识别转发到哪台服务器</p> <p>5 . 启动nginx<br><code>service nginx start</code></p> <p><strong>五. webb服务器配置</strong></p> <p>跟weba的配置一样, 只需要把 /usr/share/nginx/html/index.html 改成webb即可</p> <p><strong>六. 打开浏览器输入 <a href="http://192.168.33.200">http://192.168.33.200</a> 测试是否正常</strong></p>

发表评论

暂无评论

搜索
用户登陆