LVS+Keepalived+Ngingx+Tomcat+Mariadb+Nfs

LVS+Keepalived+Ngingx+Tomcat+Mariadb+Nfs
	
	1.首先安装LVS+keepalived,这里用yum安装即可
		
		LVS+KEEPAIVED
	
	
	IP规划
		KEEPAIVED 主为MASTER
			10.0.0.40
			
		KEEPAIVED 备用BACKUP	
			10.0.0.41
			
		VIP地址
			10.0.0.42
			
		NFS
			10.0.0.43
			
		WEB-1
			nginx-1
		
			10.0.0.45
			
		WEB-2
			nginx-2
			10.0.0.46
	
		Tomcat-1
			10.0.0.50
			
		Tomcat-2
			10.0.0.51
			
		Mariadb-1
			10.0.0.55
			
		Mariadb-2
			10.0.0.56
	
	
	
	安装
		yum install ipvsadm keepalived -y
	备份一下源配置文件:
		cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak -a
	
	keepalived
		主
			vim /etc/keepalived/keepalived.conf
			改成一下内容
			
			! Configuration File for keepalived

			global_defs {
					router_id Director1
			}
			
			vrrp_instance VI_1 {
				state MASTER
				interface eth0
				virtual_router_id 51
				priority 100
				advert_int 1
				authentication {
					auth_type PASS
					auth_pass 1111
				}
				virtual_ipaddress {
					10.0.0.42/24 dev eth0
				}
			}
			
			virtual_server 10.0.0.42 80 {
				delay_loop 3
				lb_algo rr
				lb_kind DR
				protocol TCP
			
				real_server 10.0.0.45 80 {
					weight 1
					TCP_CHECK {
							connect_timeput 3
					}
				}
			real_server 10.0.0.46 80 {
					weight 1
					TCP_CHECK {
							connect_timeput 3
					}
				}
			}
		
		
		
		
		备用
		
		vim /etc/keepalived/keepalived.conf
			改成一下内容
		
			
			! Configuration File for keepalived
            
            global_defs {
            		router_id Director2
            }
            
            vrrp_instance VI_1 {
            	state BACKUP
            	interface eth0
            	virtual_router_id 51
            	priority 80
            	advert_int 1
            	authentication {
            		auth_type PASS
            		auth_pass 1111
            	}
            	virtual_ipaddress {
            		10.0.0.42/24 dev eth0
            	}
            }
            
            virtual_server 10.0.0.42 80 {
            	delay_loop 3
            	lb_algo rr
            	lb_kind DR
            	protocol TCP
            
            	real_server 10.0.0.45 80 {
            		weight 1
            		TCP_CHECK {
            				connect_timeput 3
            		}
            	}
            real_server 10.0.0.46 80 {
            		weight 1
            		TCP_CHECK {
            				connect_timeput 3
            		}
            	}
            }
			
			
		解释:
			! Configuration File for keepalived
            
            global_defs {
            		router_id Director1			#两边的ID不一样
            }
            
            vrrp_instance VI_1 {
            	state MASTER					#主为MASTER 备用的为BACKUP
            	interface eth0                  #心跳网卡设备名称
            	virtual_router_id 51            #虚拟路由编号,主备要一致
            	priority 100                    #优先级1-255,数字越大优先级越高
            	advert_int 1                    #检测间隔,单位秒
            	authentication {                #
            		auth_type PASS              #
            		auth_pass 1111              #
            	}                               #
            	virtual_ipaddress {             #虚拟VIP地址
            		10.0.0.42/24 dev eth0    	#VIP地址和工作端口和设备名称
            	}								#
            }                                   #
												#
            virtual_server 10.0.0.42 80 {    	#LVS的虚拟IP地址和端口
            	delay_loop 3                    #服务轮询的时间间隔
            	lb_algo rr                      #LVS调度算法
            	lb_kind DR                      #LVS集群模式
            	protocol TCP                    #
												#
            	real_server 10.0.0.45 80 {   	#后端web服务器IP和端口
            		weight 1                    #主机权重为1
            		TCP_CHECK {                 #TCP链接校验
            				connect_timeput 3   #链接超时时间为3,如果超过3秒连不上,服务端就会认为这台服务器挡掉了,就会把这台机器踢出去
            		}                           #
            	}                               #
            real_server 10.0.0.46 80 {
            		weight 1
            		TCP_CHECK {
            				connect_timeput 3
            		}
            	}
            }
			
	不需要启动LVS,只启动keepalived即可!!
	不需要启动LVS,只启动keepalived即可!!
	
	主节点启动
		启动keepalived
			systemctl start keepalived
		
		开机自启动
			systemctl enable keepalived
	
	备用节点启动
		启动keepalived
			systemctl start keepalived
			
		开机自启动	
        	systemctl enable keepalived
			
		web-1安装nginx
			10.0.0.45
			
		脚本安装
			vim  nginx.sh
			输入以下内容
			
			#!/bin/bash
			#install nginx
			yum install wget gcc pcre pcre-devel openssl-devel openssl gzip make cmake zlib-devel tar lrzsz -y
			cd
			wget http://nginx.org/download/nginx-1.18.0.tar.gz
			useradd -s /sbin/nologin  -M nginx
			tar zxvf nginx-1.18.0.tar.gz
			cd nginx-1.18.0/
			./configure  --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_mp4_module
			make 
			make install
			mkdir -p /usr/local/nginx/conf.d/
			echo "
				[Unit]
			Description=nginx service
			After=network.target 
			
			[Service] 
			Type=forking 
			ExecStart=/usr/local/nginx/sbin/nginx
			ExecReload=/usr/local/nginx/sbin/nginx -s reload
			ExecStop=/usr/local/nginx/sbin/nginx -s quit
			PrivateTmp=true 
			
			[Install] 
			WantedBy=multi-user.target
			">/lib/systemd/system/nginx.service
			systemctl daemon-reload
			systemctl start nginx.service
			systemctl enable nginx.service
			
		再来执行脚本
			sh nginx.sh
			
		添加测试页面
			echo Nginx-1 > /usr/local/nginx/html/index.html
			
		测试访问
			[root@nginx-1 ~]# curl 127.0.0.1
			Nginx-1
			
		添加虚拟网卡,并编写虚拟网卡配置文件
			cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 -a
			
		修改虚拟网卡配置文件
			
			vim /etc/sysconfig/network-scripts/ifcfg-lo:0
			改成以下内容
			DEVICE=lo:0
			IPADDR=10.0.0.42
			NETMASK=255.255.255.255
			ONBOOT=yes
			
			解释:
			DEVICE=lo:0					#设备名称lo:0
			IPADDR=10.0.0.42         #VIP地址也是就是keepalived里面写的VIP地址
			NETMASK=255.255.255.255     #子网掩码32位,不要写成24位
			ONBOOT=yes                  #开机启动此设备
			
		添加路由规则,这样开机就可以自动添加了
			echo /sbin/route add host 10.0.0.42 dev lo:0 >> /etc/rc.local
		
		添加权限
			chmod +x /etc/rc.local
		
		
		配置ARP,防止这个设备在局域网内广播,在最后一行添加
			vim /etc/sysctl.conf
			在最后一行添加以下内容
			
			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
		
		重启让配置生效
			reboot	
			
			
	
				
		web-2
			编译安装nginx,执行以上nginx的脚本即可
			
			安装好以后再来添加测试页面
			echo Nginx-2 > /usr/local/nginx/html/index.html
			
		测试访问
			[root@nginx-2 ~]# curl 127.0.0.1
			Nginx-2
			
			
		添加虚拟网卡,并编写虚拟网卡配置文件	
			cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 -a	
				
		修改虚拟网卡配置文件	
				
			vim /etc/sysconfig/network-scripts/ifcfg-lo:0	
			改成以下内容	
			DEVICE=lo:0
			IPADDR=10.0.0.42	
			NETMASK=255.255.255.255	
			ONBOOT=yes	
				
			解释:	
        	DEVICE=lo:0					#设备名称lo:0
        	IPADDR=10.0.0.42         #VIP地址也是就是keepalived里面写的VIP地址
        	NETMASK=255.255.255.255     #子网掩码32位,不要写成24位
        	ONBOOT=yes                  #开机启动此设备
        	
        添加路由规则,这样开机就可以自动添加了
        	echo /sbin/route add host 10.0.0.42 dev lo:0 >> /etc/rc.local
        
        添加权限
        	chmod +x /etc/rc.local
        
        
        配置ARP,防止这个设备在局域网内广播,在最后一行添加
        	vim /etc/sysctl.conf
        	在最后一行添加以下内容
        	
        	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
        
        重启让配置生效
        	reboot	
	
	MASTER上查询LVS
		ipvsadm -Ln
		返回结果:
			IP Virtual Server version 1.2.1 (size=4096)
			Prot LocalAddress:Port Scheduler Flags
			-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
			TCP  10.0.0.42:80 rr
			-> 10.0.0.45:80              Route   1      0          0         
			-> 10.0.0.46:80              Route   1      0          0         
	
	

	这样LVS调度就完成,可以用浏览器访问vip地址 10.0.0.42
		10.0.0.42
		
		
	修改nginx主配置,两台nginx修改成同样的配置即可
		vim /usr/local/nginx/conf/nginx.conf
		
		worker_processes  1;
		events {
			worker_connections  1024;
		}
		
		http {
			include       mime.types;
			default_type  application/octet-stream;
			sendfile        on;
			keepalive_timeout  65;
			upstream tomcat {
				server 10.0.0.50:8080 weight=100 max_fails=2 fail_timeout=15;
				server 10.0.0.51:8080 weight=100 max_fails=2 fail_timeout=15;
		#       server 10.0.0.10:8080 weight=100 max_fails=2 fail_timeout=15;
		#       server 10.0.0.11:8080 weight=100 max_fails=2 fail_timeout=15;
				}
		
			server {
				listen       80;
				server_name  localhost;
		location / {
			proxy_pass http://tomcat;
			proxy_set_header host $host;
			root   html/;
			index  index.jsp index.html index.htm;
		}
		# location ~ .*\.(htm|html|txt|js|css|png|jpg|gif|jpeg|doc|xml)$
		# {
		#     root   /data/webapps/;
		#     expires 30d;
		# }
		
				}
			}


	删除默认测试页面
		rm -rf /usr/local/nginx/html/index.html
	重新加载nginx配置文件,两台nginx修改好以后都要执行
		systemctl reload nginx
		

	10.0.0.50和10.0.0.51安装tomcat
		
			先在服务器上传jdk的包和tomcat的包
			apache-tomcat-8.5.50.tar.gz  
			
			jdk-8u231-linux-x64.tar.gz
		
		
		脚本安装
		
		vim install_tomcat.sh
			写入以下内容
			#!/bin/bash
			. /etc/init.d/functions
			DIR=`pwd`
			JDK_FILE="jdk-8u231-linux-x64.tar.gz"
			TOMCAT_FILE="apache-tomcat-8.5.50.tar.gz"
			JDK_DIR="/usr/local"
			TOMCAT_DIR="/usr/local"
			
			install_jdk(){
			if !  [  -f "$DIR/$JDK_FILE" ];then
				action "$JDK_FILE 文件不存在" false 
				exit; 
			elif [ -d $JDK_DIR/jdk ];then
					action "JDK 已经安装" false
				exit
			else 
					[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
			fi
			tar xvf $DIR/$JDK_FILE  -C $JDK_DIR
			cd  $JDK_DIR && ln -s jdk1.8.* jdk 
			
			cat >  /etc/profile.d/jdk.sh <<EOF
			export JAVA_HOME=$JDK_DIR/jdk
			export JRE_HOME=\$JAVA_HOME/jre
			export CLASSPATH=\$JAVA_HOME/lib/:\$JRE_HOME/lib/
			export PATH=\$PATH:\$JAVA_HOME/bin
			EOF
			.  /etc/profile.d/jdk.sh
			java -version && action "JDK 安装完成" || { action "JDK 安装失败" false ; exit; }
			
			}
			
			install_tomcat(){
			if ! [ -f "$DIR/$TOMCAT_FILE" ];then
					action "$TOMCAT_FILE 文件不存在" false 
				exit; 
			elif [ -d $TOMCAT_DIR/tomcat ];then
					action "TOMCAT 已经安装" false
				exit
			else 
				[ -d "$TOMCAT_DIR" ] || mkdir -pv $TOMCAT_DIR
			fi
			tar xf $DIR/$TOMCAT_FILE -C $TOMCAT_DIR
			cd  $TOMCAT_DIR && ln -s apache-tomcat-*/  tomcat
			echo "PATH=$TOMCAT_DIR/tomcat/bin:"'$PATH' > /etc/profile.d/tomcat.sh
			id tomcat &> /dev/null || useradd -r -s /sbin/nologin tomcat
			
			cat > $TOMCAT_DIR/tomcat/conf/tomcat.conf <<EOF
			JAVA_HOME=$JDK_DIR/jdk
			JRE_HOME=\$JAVA_HOME/jre
			EOF
			
			chown -R tomcat.tomcat $TOMCAT_DIR/tomcat/
			
			cat > /lib/systemd/system/tomcat.service  <<EOF
			[Unit]
			Description=Tomcat
			#After=syslog.target network.target remote-fs.target nss-lookup.target
			After=syslog.target network.target 
			
			[Service]
			Type=forking
			EnvironmentFile=$TOMCAT_DIR/tomcat/conf/tomcat.conf
			ExecStart=$TOMCAT_DIR/tomcat/bin/startup.sh
			ExecStop=$TOMCAT_DIR/tomcat/bin/shutdown.sh
			PrivateTmp=true
			User=tomcat
			
			[Install]
			WantedBy=multi-user.target
			EOF
			systemctl daemon-reload
			systemctl enable --now tomcat.service
			systemctl is-active tomcat.service &> /dev/null &&  action "TOMCAT 安装完成" || { action "TOMCAT 安装失败" false ; exit; }
			
			}
			
			install_jdk 
			
			install_tomcat
				
				
		修改好以后保存退出
			执行脚本
				sh install_tomcat.sh
		
		安装好以后查看tomcat的ID
			#id tomcat
			返回结果,你的ID不一定和我的一样
			uid=995(tomcat) gid=995(tomcat) groups=995(tomcat)
		
		下载zrlog的war包
			官方地址
				https://www.zrlog.com/
				
			把下载的好war包,复制到/usr/local/tomcat/webapps/并重命名为ROOT.war
				cp zrlog-2.2.0-5e8a51f-release.war /usr/local/tomcat/webapps/ROOT.war
			
			给这个目录tomcat的属主属组的权限
				chown -R tomcat. 	/usr/local/tomcat/webapps/ROOT/
				
	安装Maridb,两台10.0.0.55和10.0.0.56都安装
		链接:
			https://9527edu.org/post/45.html
			
	安装好Maridb以后,两台10.0.0.55和10.0.0.56,设置为主从
		vim /etc/my.cnf
		Mariadb里面有单独的log-bin=mysql-bin和server-id=1,只需要单独的修改即可,无需添加进去
		log-bin=mysql-bin
		server-id=1
		链接:
			https://9527edu.org/post/115.html
		10.0.0.55为主
		10.0.0.56为从
	
	进入主数据库创建zrlog的数据库并授权
		进入数据库
			mysql -uroot -p密码
			
		创建
			create database zrlogdb character set utf8 collate utf8_bin;
			
		授权
			grant all on zrlogdb.* to 'zrlogdb'@'%' identified by '123456';
	
	
	用浏览器访问10.0.0.50:8080
		http://10.0.0.50:8080
			完成安装
			
		写入信息
			数据库服务器
				10.0.0.55
			
			数据库名
				zrlogdb
				
			数据库用户名
				zrlogdb
			
			数据库密码
				123456
				
			数据库端口
				3306
		
		点击下一步
		根据自己的喜好填写
		
	安装好以后,把/usr/local/tomcat/webapps/ROOT这个目录拷贝到/tmp下
		cp /usr/local/tomcat/webapps/ROOT  /tmp/ -ra
		
		打包/tmp/ROOT目录
			进入/tmp下
				cd /tmp
				
			打包到/root目录
				tar -cvf /root/zrlog.tar.gz ROOT
		
	再通过scp把这个目录拷贝到NFS服务器上
		scp /root/zrlog.tar.gz root@10.0.0.43:/root/
	
	安装NFS,10.0.0.43
		
		首先创建一个tomcat用户uid和gid都是995
			创建tomcat组,gid为995
				groupadd tomcat -g 995
				
			创建tomcat用户,并指定gid995和uid995
				useradd tomcat -s /sbin/nologin -M -u 995 -g 995
		
		安装nfs
			yum install nfs-utils -y
			
		创建NFS共享文件夹
			mkdir -p /zrlog
			
		修改配置文件
			vim /etc/exports
				修改如下
				/zrlog 10.0.0.0/24(rw,sync,all_squash,anonuid=995,anongid=995)
		
		解压zrlog.tar.gz
			tar -xf zrlog.tar.gz -C /zrlog
		
		####给tomcat属主属组权限
		这条命令可以不用操作,默认是有权限的,如果输入了,可能需要重新解压包才能使用
			chown -R tomcat. /zrlog
		
		开机启动nfs
			systemctl enable nfs-server
		
		修改好配置文件以后重启nfs	
			systemctl restart nfs-server
	
	
	
	
	10.0.0.50和10.0.0.51修改一下/etc/fstab,这样开机自动挂载nfs了
	
	先安装nfs
			yum install nfs-utils -y
	修改配置文件
		vim /etc/fstab
			添加一下内容,在最后一行添加
				10.0.0.43:/zrlog /usr/local/tomcat/webapps/ nfs defaults 0 0
	
		wq保存退出
	
	挂载
		mount -a	


Powered By Z-BlogPHP 1.7.3

 Theme By 优美模版

本博客为开源博客,本博客联系QQ:372097243