欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WEB集群实现LVS负载均衡+域名解析 案例

程序员文章站 2024-01-31 23:23:10
...

项目介绍

项目流程图

WEB集群实现LVS负载均衡+域名解析 案例

项目实际操作

记得要关掉防火墙和SELINUX

先安装FTP

注意这里要创建一个普通用户并设置密码,通常来讲我们root用户是个运维人员操作的,防止程序员和访客误操作!!

yum -y install vsftpd
systemctl start vsftpd
vim /etc/vsftpd/vsftpd.conf
	anon_mkdir_write_enable=YES #允许匿名登入者有新增目录的权限(33行修改)
	anon_other_write_enable=YES #允许匿名登入者更多于上传或者建立目录之外的权限(34行修改)
	max_clients=100 #最大用户在线数量(130行,也就是最后一行)
	max_per_ip=2 #每ip最大线程(131行,也就是最后一行)
	anon_max_rate=30000 #匿名用户最大传输速度(132行,也就是最后一行)
	local_max_rate=50000 #本地用户最大传输速度(133行,也就是最后一行)
chmod -R 777 /var/ftp/pub/ #授权
systemctl restart vsftpd

安装docker-ce

这里我使用的是离线安装,也可以导入阿里源或者清华源。

tar xzf docker-19.03.9.tgz
cp docker/* /usr/bin/
cp docker.service /etc/systemd/system
systemctl start docker
systemctl stop firewalld #为防止遗漏,这里在关一遍
setenforce 0 #为防止遗漏,这里在关一遍
cp daemon.json /etc/docker
systemctl restart docker
mkdir /lnmp #创建我们更好的整理
ls nginx.conf #这是我们之前源码安装时提取的配置文件
vim Dockerfile
	FROM centos:7
	ADD  nginx-1.12.2.tar.gz /root/
	RUN  yum -y install gcc pcre-devel zlib-devel make php php-mysql php-fpm php-gd \
     	&& cd /root/nginx-1.12.2 \
     	&& ./configure \
     	&& make \
     	&& make install \
     	&& yum clean all \
     	&& echo "<?php phpinfo();?>" > /usr/local/nginx/html/index.php

	COPY start_lnmp.sh /usr/local/sbin/
	COPY nginx.conf /usr/local/nginx/conf/nginx.conf

	CMD ["start_lnmp.sh"]
vim start_lnmp.sh
	#!/bin/bash
	/usr/local/nginx/sbin/nginx
	exec php-fpm -F
chmod +x start_lnmp.sh
docker build -t lnmp:1.1 ./
docker imgaes
docker run --name lnmp -d -p 80:80 -v /opt/html:/usr/local/nginx/html lnmp:1.1
ls mysql5.7_utf8.tar.gz
tar xzf mysql5.7_utf8.tar.gz
docker load -i mysql5.7_utf8.tar
docker images
docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_DATABASE=lnmp -e MYSQL_USER=zrj -e MYSQL_PASSWORD=123 mysql:5.7
docker ps
cd /opt/html/
ls /opt/html/Discuz_X3.4_SC_UTF8【20191201】.zip
yum -y install unzip
unzip Discuz_X3.4_SC_UTF8【20191201】.zip(210服务器)
ls tinyshopV2.5_data.zip
unzip tinyshopV2.5_data.zip(211服务器)
chmod -R 777 /opt/html/upload/

我们代码布置好后进行测试。
WEB集群实现LVS负载均衡+域名解析 案例
WEB集群实现LVS负载均衡+域名解析 案例

LVS负载均衡

创建一个vip实现负载均衡

#DR模式(服务器那台机器)
yum -y install ipvsadm
ifconfig ens33:0 192.168.182.100 broadcast 192.168.182.100 netmask 255.255.255.255 up 
route add -host 192.168.182.100 dev ens33:0
ipvsadm -C 
ipvsadm -A -t 192.168.182.100:80 -s rr
ipvsadm -a -t 192.168.182.100:80 -r 192.168.182.210:80 -g
ipvsadm -a -t 192.168.182.100:80 -r 192.168.182.211:80 -g
#RS模式(web那台机器)
ifconfig lo:0 192.168.182.100 broadcast 192.168.182.100 netmask 255.255.255.255 up
route add -host 192.168.182.100 dev lo:0
systemctl stop firewalld
setenforce 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

WEB集群实现LVS负载均衡+域名解析 案例

DNS域名解析

这里我解析的是VIP所以ip是192.168.182.100

yum -y install bind bind-chroot bind-utils
vim /etc/named.conf
	listen-on port 53 { any; };(13行,ip修改为any)
	llow-query     { any; };(21行,ip修改为any)
vim /etc/named.rfc1912.zones
	zone "wg.com" IN {
        type master;
        file "wg.com.zone";
        allow-update { none; };
	};
cp -p /var/named/named.localhost /var/named/wg.com.zone
vim wg.com.zone
		$TTL 1D
		@       IN SOA  @ admin.wg.com. (
                                        		0       ; serial
                                        		1D      ; refresh
                                        		1H      ; retry
                                        		1W      ; expire
		                                        3H )    ; minimum
        		NS      @
        		A       127.0.0.1
        		AAAA    ::1
		www     IN      A       192.168.182.100
vim /etc/resolv.conf
	nameserver 192.168.182.100(第2行)
systemctl restart named
nslookup www.wg.com(测试工具)
dig www.wg.com(测试工具)

Mail邮件报警

vim /etc/mail.rc
	set from=**自己QQ号**@qq.com(最后一行自己添加的)
	set smtp=smtp.qq.com
	set smtp-auth-user=**自己QQ号**
	set smtp-auth-password=uyrvrioansrxdhhc(这是邮箱密码)
	set smtp-auth=login
#这里我用到的是VIP掉的情况下我们进行报警
vim mail.sh	
	#!/bin/bash     
	a=`ifconfig | grep -w "ens33:0" | awk '{print $2}' | wc -l`
	if [ $a -ne 0 ];then
     	echo "你的lvs正常,vip没有掉"
	else
     	echo "你的VIP发生故障,请及时处理,检查自己的LVS负载均衡。" | mail -s "警告" **自己QQ号**@qq.com
	fi

WEB集群实现LVS负载均衡+域名解析 案例