修改IP地址 修改主机名
两台机器上开启nginx,保证能访问论坛 第二台机器上,关闭mariadb 修改配置文件:config/config_global.php config/config_ucenter.php uc_server/data/config.inc.php 测试,保证两台机器都能正常访问到论坛。
测试:php
[root@wangzb03 ~]# /etc/init.d/mysqld stop [root@wangzb03 ~]# chkconfig mysqld off [root@wangzb03 ~]# systemctl stop httpd [root@wangzb03 ~]# systemctl enable nginx //nginx开机启动 wangzb03上须要访问登陆wangzb01上数据库 [root@wangzb03 ~]#mysql -ubbs -pmysql -h192.168.153.133 若是报错不被容许,则须要在wangzb01机器上受权 [root@wangzb01 ~]# mysql -uroot -pmysql MariaDB [(none)]> show grants for 'bbs'@'127.0.0.1'; +------------------------------------------------------------------------------------------------------------+ | Grants for bbs@127.0.0.1 | +------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'bbs'@'127.0.0.1' IDENTIFIED BY PASSWORD '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA' | | GRANT ALL PRIVILEGES ON `bbs`.* TO 'bbs'@'127.0.0.1' | +------------------------------------------------------------------------------------------------------------+ 执行受权语句给wangzb03机器ip MariaDB [(none)]> GRANT USAGE ON *.* TO 'bbs'@'192.168.153.135' IDENTIFIED BY PASSWORD '*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON `bbs`.* TO 'bbs'@'192.168.153.135'; MariaDB [(none)]> flush privilege; 配置Windows下C:\Windows\System32\drivers\etc\hosts文件中域名解析,打开浏览器输入域名bbs.wangzb.cc访问论坛,须要确保wangzb01和wangzb03均可以访问(经过查看日志/data/logs/bbs.access.log)。 [root@wangzb01 ~]# tail -f /data/logs/bbs.access.log [root@wangzb03 ~]# tail -f /data/logs/bbs.access.log 点击浏览器论坛界面查看日志bbs.access.log是否有打印出来,若是有说明访问该主机成功。注意若是切换Windows下的hosts域名解析后,须要重启浏览器清楚缓存,否则日志仍是记录到切换前的主机里。
几个专业术语:DIR(分发器)DIP(DIR的IP) RS(真实服务器) VIP(虚拟IP,也是提供服务的IP)
用iptables的NAT表实现网络地址转换,数据包目标IP为DIP,DIR将目标IP地址转换为RS的IP, 这样请求的包就到了RS上,而RS返回的数据包原本是到DIP的,也会通过DIR转换, 把目标IP转换为客户端的IP
DIR会改请求报文中的MAC地址,原本请求的包中的MAC地址为DIR的MAC地址,可是却被修改为了 RS的MAC地址,这样数据包就到了RS上。因为数据包的源IP为客户端IP,因此它在返回数据包的时候, 能够直接发给客户端,而再也不通过DIR。
客户端请求的数据包发给DIR,DIR会近一步把包封装,加上了一个新的目标IP(RS的IP),这样 数据包到了RS后再将封装的包拆开,得到原始数据包。返回数据包的时候,也是直接发给了客户端。
调度器经过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上, 它均等地对待每一台服务器,而无论服务器上实际的链接数和系统负载。
调度器经过"加权轮叫"调度算法根据真实服务器的不一样处理能力来调度访问请求。 这样能够保证处理能力强的服务器处理更多的访问流量。调度器能够自动问询真实服务器的负载状况, 并动态地调整其权值。
调度器经过"最少链接"调度算法动态地将网络请求调度到已创建的连接数最少的服务器上。 若是集群系统的真实服务器具备相近的系统性能,采用"最小链接"调度算法能够较好地均衡负载。
在集群系统中的服务器性能差别较大的状况下,调度器采用"加权最少连接"调度算法优化负载均衡性能, 具备较高权值的服务器将承受较大比例的活动链接负载。调度器能够自动问询真实服务器的负载状况, 并动态地调整其权值。
"基于局部性的最少连接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。 该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载, 将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工做负载, 则用"最少连接"的原则选出一个可用的服务 器,将请求发送到该服务器。
"带复制的基于局部性最少连接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。 它与LBLC算法的不一样之处是它要维护从一个 目标IP地址到一组服务器的映射, 而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址 对应的服务 器组,按"最小链接"原则从服务器组中选出一台服务器,若服务器没有超载, 将请求发送到该服务器,若服务器超载;则按"最小链接"原则从这个集群中选出一 台服务器, 将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改, 将最忙的服务器从服务器组中删除,以下降复制的 程度。
"目标地址散列"调度算法根据请求的目标IP地址,做为散列键(Hash Key)从静态分配的散列表 找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。
"源地址散列"调度算法根据请求的源IP地址,做为散列键(Hash Key)从静态分配的散列表找出对应的服务器, 若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。
三台机器: wangzb01(133) -> RS1 wangzb03(135) -> RS2 wangzb02(35) -> DIR VIP: 35
yum install -y ipvsadm
vim /usr/local/sbin/lvs_dr.sh //内容以下html
#! /bin/bash ipv=/usr/sbin/ipvsadm vip=192.168.153.35 rs1=192.168.153.133 rs2=192.168.153.135 #注意这里的网卡名字 #之因此要先重启ens33网卡,是为了防止脚本重复执行时和以前的配置冲突 ifdown ens33 ifup ens33 #增长ens33:1虚拟网卡,并把vip配置在ens33:1上 ifconfig ens33:1 $vip broadcast $vip netmask 255.255.255.255 up #增长路由 route add -host $vip dev ens33:1 #-C表示清空以前的规则 $ipv -C #-A表示增长规则,-t指定vip以及port,-s指定调度算法,这里还有一个-p选项,后面跟时间(单位s),表示保持长链接 $ipv -A -t $vip:80 -s wrr #-a表示增长rs,-r指定具体的rsip和port,-g表示使用dr模式(-i表示ip tunnel模式,-m表示NAT模式),-w指定权重 $ipv -a -t $vip:80 -r $rs1:80 -g -w 1 $ipv -a -t $vip:80 -r $rs2:80 -g -w 1 # 脚本内容到此结束
sh /usr/local/sbin/lvs_dr.shmysql
检查:ip addlinux
vim /usr/local/sbin/lvs_rs.sh //内容以下:nginx
#!/bin/bash vip=192.168.153.35 ifdown lo ifup lo ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up route add -host $vip lo:0 #更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端 #参考文档https://www.imooc.com/article/79661 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
sh /usr/local/sbin/lvs_rs.sh算法
windows hosts 浏览器sql
linux curl vip数据库