重头开始搭建负载均衡服务器(Linux环境下:Nginx+memcached+tomcat实现负载均衡+共享session)

一、前言:
这段时间,在学习服务器集群的搭建,其中遇到过很多的问题,自己也是一边看博客一边找资料,慢慢的去研究,然后搭成了一个简单的集群环境。希望对刚刚接触这方面的哥们有所帮助。
二、博客分布介绍:
1、首先话不多说,你在做这个实验前所需要的资料,我放在百度网盘上
https://pan.baidu.com/s/1B6-JtTJuO-JgirnXKDVWoQ
提取密码:25s1
2、本实验我分为三步走战略思想实现:
(1)、部署Linux环境:安装Linux软件,部署:jdk环境、tomcat服务器、Nginx服务器
(2)、负载均衡实现
(3)、session共享实现
3、个人总结与个人对理论的理解
三、环境搭建与部署:
1、Linux环境搭建:
(1)、前期的Linux软件的安装与xshell的安装,我就不详细讲解了,网上搜索一大堆,这里主要说怎么样去快速的搭建我们需要的虚拟机环境。
(2)、将我的资料上传到你的虚拟机中,存放在 /usr/local/tmp 中,这里作为我们外部文件的存放目录,如果没有该目录的自己创建即可。
(3)、上传完压缩包后,就开始我们的环境搭建

    1、安装jdk:
    	a、解压解压各个压缩包
    	# tar -zxvf  压缩包名
    	b、把解压后的文件复制到 /usr/local/jdk7	中
    	# cp   文件名  /usr/local/jdk7
    	c、配置环境变量,执行命令
    	#	vim /etc/profile
    	   在最下面添加文件中的内容:
    	   		分割使用    :     冒号
    	   		变量名用    $    美元符号进行引用
    	   		添加或者修改变量用     export
					export JAVA_HOME=/usr/java/jdk1.7.0_67(这里的jdk7是你前面复制的jdk7的文件名)
					export PATH=$PATH:$JAVA_HOME/bin
		d、解析文件(或重新启动系统)
		#	source /etc/profile
		e、验证配置是否成功
		#	java -version
		出现jdk版本就安装成功了!
   2、tomcat安装
   	a、压缩包前面已经解压了
    	# tar -zxvf  压缩包名
    	b、把解压后的文件复制到 /usr/local/tomcat中
    	# cp   文件名  /usr/local/tomcat
    	c、和上面jdk一样,配置环境变量,执行命令
    		#	vim /etc/profile
    	   在刚刚配置的jdk环境变量下面配置tomcat的环境变量   		
			    export TOMCAT_HOME=/usr/local/tomcat
				export CATALINA_HOME=/usr/local/tomcat
		d、一样的先解析文件:
		#	source -etc/profile
		e、这里要将一个端口的开放:因为Linux系统默认是开放22端口的,其他端口都被防火墙拦截
		了的,所以有两种方案:一个是关闭防火墙,第二个是修改防火墙文件开放tomcat需要的默认
		端口8080,方法如下:
			命令进入,编辑文件
			#	vim /etc/sysconfig/iptables 
			插入你指定的放行的端口号:
			-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT(你看默认开放的22
			端口就知道怎么做了)
		d、放行端口后,需要重启防火墙
		#	service iptables restart
			重启是:restart
			启动是:start
			停止是:stop
	3、测试tomcat能否正常运行:
		a、进入tomcat的bin目录
		#	cd /usr/local/tomcat/bin/
		b、启动tomcat
		#	./startup.sh(启动后,会有启动成功的提示!)
	4、在window环境的浏览器下,看能不能访问tomcat主页
	这个就是和访问tomcat一样的方式,只不过你要知道你虚拟机的IP地址,通过下面命令查看虚拟机
	地址:
		# ifconfig
		inet addr:(虚拟机的IP地址)
	这样通过IP地址+8080端口号就能访问tomcat默认主页。我的访问是:192.168.191.141:8080
	成功访问小猫主页,tomcat环境就搭建成功!
	5、Nginx环境的搭建
		a、Nginx不需要依赖什么环境,只需要安装好软件就OK了
		b、这里 Nginx运用的是编译安装,进入Nginx文件中
		#	cd /usr/local/tmp/nginx-1.6.2/
		c、执行命令安装
		# ./configure --prefix=/usr/local/nginx	(就像你window安装软件一样,要执行一个文件,然后
		会弹出一个安装界面一样,Linux中 你执行configure文件后,然后指定安装的路径:
		/usr/local/nginx	后,他就编译好Nginx软件的安装路径了)
		d、在执行编译安装命令
		#	make && make install
		然后在 /usr/local目录下就有安装好的	nginx	软件了。
		e、执行命令启动nginx服务器:
		#	/usr/local/nginx/sbin/nginx	(启动nginx服务器)
		#	/usr/local/nginx/sbin/nginx	-s reload(重启nginx服务器)
		#	/usr/local/nginx/sbin/nginx	-s stop	(关闭nginx服务器)
		f、这里nginx服务器默认走的是80端口,所以需要和上面一样防火墙开放80端口:
		#	vim /etc/sysconfig/iptables
		-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(开放默认的80端口)
		g、重启防火墙
		#	service iptables restart	(会显示重启成功的提示!)
	这里nginx服务器就安装成功了,
		#	/usr/local/nginx/sbin/nginx	(启动nginx服务器)
		然后window浏览器下面进行测试,弹出nginx成功页面就OK了(成功页面就一些nginx的介
		绍)

至此,我们需要的环境就搭建完了,下面开始克隆虚拟机,模拟负载均衡实验。
(4)、关于虚拟机的克隆问题,我们最好用‘快照链接’,这样速度快,所占的存储空间少,快照链接克隆的方法,可以看我的博客(Linux从入门到挣扎版块)。
(5)、到此为止,前期的准备工作就已经搞完了,下面用一个拓扑图来介绍一下我的实验环境:
在这里插入图片描述
四、按照拓扑图实现先实现负载均衡
1、编写nginx服务器的配置文件:
# vim /usr/local/nginx/conf/nginx.conf(编辑nginx配置文件)

    1、在http中,sever之外指定upstream(upstream是nginx内置的变量,相当于一个全局变量,里面
    可以写你需要轮循的IP地址,也是你负载均衡的服务器)
    (weight:是权重 max_fails 、 fail_timeou这两个没什么,不用管,只是一些连接过期的配置)
    .........
    upstream myapp {
    (我的两台装虚拟机的IP地址,你的话,要写自己装虚拟机的IP地址,这里定义的‘myapp’是用作下
    面负载均衡使用的,upstream是一个内置的变量,不用管它,就这样写就行了)
    server 192.168.191.142:8080  weight=1 max_fails=2 fail_timeout=30s;
    server 192.168.191.143:8080  weight=1 max_fails=2 fail_timeout=30s;
    }
    ............
    server {
    listen       80;
    server_name  abc;
    charset utf-8;
    access_log  logs/host.access.log  main;
    location / {
      proxy_pass http://myapp;
       root   html;
        index  index.html;
    }

最后附着一张个人配置截图:
在这里插入图片描述
2、将nginx配置文件配置完后,需要修改一下两个tomcat的默认访问页面,修改的目的是测试显示用的(我的两个tomcat是分别装在两个Linux中的IP地址分别是:192.168.191.142和192.168.191.143);下面是配置文件内容,可以直接复制粘贴:

    <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test Page</title>
    </head>
    <body>
    Test1 Page<br/>
     192.168.191.142<br/>//这里的IP地址就写你Linux的IP地址,两台LinuxIP地址是不一样的
     session Id : <%=session.getId()%><br>//这里是最后做session共享时用到的,先不管
     ,先把负载均衡搭建起来
     <%= session.getCreationTime() %>//这里是创建session的时间,也是session共享时使用的
     </body>
     </html>

3、修改完,tomcat的页面后,就开始负载均衡实验:
a、分别启动两台tomcat,我这里就给启动一台的例子:
# cd /usr/local/tomcat/bin/
# ./startup.sh (执行文件,启动tomcat)
另一台tomcat一样的方法
b、启动nginx服务器
# /usr/local/nginx/sbin/nginx (nginx服务器的启动、重启、关闭上面有)
4、启动完后就可以开始负载均衡实验了:
a、在客户端浏览器,输入nginx服务器所在虚拟机的IP地址+端口号,记住如果访问不了,可能就是端口的问题或者nginx配置文件的问题,好好检查一下
b、实验截图:
在这里插入图片描述

下面是刷新后的结果:
在这里插入图片描述
有我所描述的效果,那么恭喜,你的负载均衡实现了,但是,我们观察到,负载均衡实现了,但是我们的session却在不停的刷新,那么对于我们现在的网站实现由很大的弊端。我们用户的登录状态无法进行保存,也就是,你跳转一次tomcat服务器,你就需要重新登录,这样是不好的,所以我们利用下面的memcached缓存实现session的存储,也就是用户的session不再存在tomcat中,而是找个第三方缓存存储,需要用时,就在这个第三方寻找,简单点说,就是需要建立一个中转站存储session。这样session就不会丢失了,还不懂的,可以去百度看看,很多介绍的。
五、memcached实现session共享:
关于实现session共享的原理很简单,大家可以百度一下,其实就是不再将用户访问产生的session存放在单个tomcat服务器中,而是将session存放在第三方的缓存memcached中,这样memcached就作为一个中转站,不会tomcat服务器的影响。原理图上面有。
这里主要将实现session共享的步骤:
1、前面已经实现的负载均衡,但是我们的session老是刷新变动,这里我们需要让这个session不再改变
2、安装memcached缓存,该缓存软件安装在装有nginx服务器的Linux中,我的是192.168.191.141
3、由于memcached依赖于libevent,因此需要安装libevent。由于Linux系统可能已经默认安装了libevent,所以具体命令如下:

    rpm -qa|grep libevent			查看系统是否已经安装该软件,如果安装了就执行命令:
    rpm -e libevent-1.4.13-4.el6.x86_64 --nodeps(由于系统自带的版本旧,忽略依赖删除)
    安装libevent命令:
   #  tar -zxvf libevent-2.0.21-stable.tar.gz(该压缩包可以自己去找)
  #   cd libevent-2.0.21-stable
  #	./configure --prefix=/usr/local/libevent		(进入bin目录,执行该文件)
  #	make && make install		(编译安装,好了后,你的/usr/local	目录下就有  libevent文件了)

在这里插入图片描述

至此安装就完成,如果编译安装过程中出现错误:configure: error : no acceptable C compiler found in $PATH错误时是没有安装gcc
是因为你没有gcc编译器,利用yum安装即可:
# yum install gcc* make*

4、安装memcached命令:

    #	tar zxvf memcached-1.4.2.tar.gz		(解压memcached压缩包)
    #	cd memcached-memcached-1.4.2			(进入文件)
    #	 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/	(指定编译安
    装路径和指定需要的依赖)
     #	make && make install		(编译安装)
     至此memcached安装完毕;

5、至此,memcached就安装成功了。
6、然后,需要对tomcat服务器下手,因为tomcat服务器并不知道需要将浏览器访问产生的session存放在哪里,所以我们需要为每个tomcat服务器指定session存放的位置,也就是配置文件的配置:
a、进入tomcat配置文件目录
# cd /usr/local/tomcat/conf/
b、修改配置文件 context.xml(该配置文件是专门用来配置服务器资源的存储的,具体去百度)
# vim context.xml(编辑配置文件,将我的进行赋值粘贴,修改一下IP路径即可)

    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
     memcachedNodes="n1:192.168.191.141:11211"(这里指定路径和端口号,也就是你
     memcached安装的路径,配置他走的是11211端口)
     lockingMode="auto"
     sticky="false"
     sessionBackupAsync="false"
     sessionBackupTimeout= "1000"  
     copyCollectionsForSerialization="true"
     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

在这里插入图片描述
7、两台tomcat配置好后,我们所有的配置环境啥的,就都准备好了,接下来开始做session共享测试实验。。。。。。。。。。。。。。好鸡冻。。。。。。。。。。。。。
8、鸡冻时刻:
a、启动两台tomcat:(前面启动了的话,记得关闭再启动,因为配置文件修改了)
# cd /usr/local/tomcat/bin
# ./startup.sh
b、重启nginx
# /usr/local/nginx/sbin/nginx -s reload
c、启动memcached,并且指定运行端口号,这是要看看你的端口11211是否开启
# ./usr/local/memcached/bin/memcached -d -m 256 -u root -p 11211 -c 1024 –P /tmp/memcached.pid
memcached启动参数解释

9、做了一上午了吧,查了很多资料了吧,下面开始负载均衡+session共享的实验:
a、和前面一样,输入nginx所在虚拟机的地址,然后不同的刷新,然后你会发现,IP地址在不停的作轮循变化,但是我们的session编号,和创建session的时间却始终没有变,这样我们的session共享就完成了。。。。。。

在这里插入图片描述

在这里插入图片描述

六、结束语:
希望这篇帖子对大家能有帮助,如果有想做大数据的没有学习资源的,可以评论一下,我会将百度网盘链接分享给您,本人大数据这是也是网上找资料学的野路子,希望能多多交流。最后请用您的装X神器 肾X或者别的更牛比的手机,打开你的马爸爸免费发钱,领一下在下的红包,打赏一下下,领了就快快买个鸡腿,给自己加个餐把!!!!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41557853/article/details/86095618