精灵商场项目(六)--Nginx负载均衡+部署linux

一、tomcat集群

1.1 tomcat集群搭建

由多台服务器共同为用户提供服务.但是为了抗击高并发,需要配合负载均衡策略实现

1.2 搭建集群

修改application.yml配置文件,将端口 分别为8081 , 8082 ,8083 进行打包为 3 台tomcat服务器

启动三台服务器,测试集群是否可用 , 动态获取端口信息

@RestController
public class MessageController {
    @Value("${server.port}")
    private String port;

    @RequestMapping("/getPort")
    public String getMsg() {
        return "当前端口为:" + port;
    }
}

二、Nginx负载均衡

2.1 轮循策略

按照配置文件的顺序,依次访问服务器

  1. nginx.conf中配置 jlWindows 轮循策略配置
  2. 在后台服务器的 location 中配置代理路径为 proxy_pass http://jlWindows;
#定义tomcat集群 1.轮循策略
	upstream jlWindows {
		server localhost:8081;
		server localhost:8082;
		server localhost:8083;
	}

2.2 权重策略

为了让性能更好的服务器更多的承担访问压力 , 所以采用权重策略

upstream jlWindows增加 weight 属性值

例 :

server localhost:8081 weight=8;

server localhost:8082 weight=2;

第一个weight=8,第二个weight=2,总数是10。
即第一个tomcat负载80%的请求,第二个tomcat负载20%的请求

2.3 down 属性-停用

如果在服务器中标识down属性之后,该服务器将不会再为用户提供服务

2.4 backup 属性-备用机

如果需要在集群中设置备用机.则需要设置backup属性

设置为备用机之后,当主机遇忙/主机宕机时生效

2.5 Nginx负载均衡策略

当按照配置文件中指定的负载均衡方式进行访问时,如果后台服务器有宕机的显现,则在超时时间过后,会访问全新的服务器.保证用户访问正确

2.6 Nginx实现tomcat高可用配置

属性说明:

  1. 定义最大失败次数为1 : max_fails=1
  2. 设定失败的时间周期为60s : fail_timeout=60s

原理说明:当nginx访问后台服务器时,如果发现后台服务器连接不通.当失败次数达到了设定的最大次数时,则开启高可用的策略.规定用户在时间周期之内,不会再次访问故障机

2.7 nginx.conf 配置文件

#搭建后台服务器.
	server {
		listen 80;
		server_name manage.jl.com;

		location / {
			#配置代理路径
			#proxy_pass http://localhost:8091;
			#proxy_pass http://jlWindows;
			proxy_pass http://jlLinux;
			proxy_connect_timeout 2;
			proxy_read_timeout 2;
			proxy_send_timeout 2;
		}
	}

	#定于tomcat集群  1.轮循策略 2.权重策略 3.负载均衡策略
	upstream jlWindows {
		server localhost:8081 weight=6 max_fails=1 fail_timeout=60s down;
		server localhost:8082 weight=3 max_fails=1 fail_timeout=60s;
		server localhost:8083 weight=1 max_fails=1 fail_timeout=60s backup;
	}

	#配置Linux集群
	upstream jlLinux {
		server 192.168.56.129:8081;
		server 192.168.56.129:8082;
		server 192.168.56.129:8083;
	}

2.8 项目上线步骤

要求在线部署.尽可能少影响用户 nginx/tomcats

  1. 设计项目上线方案

  2. 将需要上线部署的服务器标识down,之后重启nginx

  3. 之后进行jar包的部署

  4. 之后完成项目的测试(可能会出现问题)

  5. 之后切换其他的服务器标识down,直到部署完成

  6. nginx一般都会有2台.方便完成上线部署


三、部署到本地虚拟机linux

3.1 连接linux

使用Xshell 通过SSH远程连接linux系统 ip:192.168.56.129 阿里云服务器 : 123.56.98.7

3.2 linux系统安装JDK

  1. 通过rz插件实现与linux文件的传输
  2. 安装rz插件 : yum -y install lrzsz 上传 rz 下载 sz
  3. 将JDK安装包上传到指定文件目录下/usr/local/src下 (直接将JDK拖进Xshell)
  4. 解压JDK文件 : tar -xvf jdk-8u51-linux-x64.tar.gz

3.3 配置环境变量

修改Linux系统中环境变量需要修改/etc/profile文件 vim /etc/profile

配置JKD环境变量

#set java env
JAVA_HOME=/usr/local/src/java/jdk1.7.0_51
JAVA_BIN=/usr/local/src/java/jdk1.7.0_51/bin
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

环境变量生效 : source /etc/profile

3.4 检测JDK是否生效

java -version

3.5 Linux tomcat集群部署

步骤 :

  1. 修改数据库连接地址windows地址
  2. 关闭2个系统的防火墙
  3. 关闭数据库权限

3.5.1 修改数据库连接地址

注意 : 链接地址切记写net8网卡IP地址

application.yml配置数据连接 192.168.56.1

在这里插入图片描述

#引入druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.56.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

3.5.2 关闭windows防火墙

在这里插入图片描述

3.5.2 关闭Linux防火墙

  1. 永久关闭防火墙 : chkconfigiptables off
  2. 关闭现有防火墙 : service iptables stop

在这里插入图片描述

3.5.3 开放数据库对外访问权限

说明 : grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];

全开 : grant all on *.* to 'root'@'%' identified by 'root';

指定IP地址 : grant all on *.* to 'root'@'ip地址' identified by 'root';

在数据库中执行该指令

/*开放数据库权限*/
GRANT ALL ON *.* TO "root"@"%" IDENTIFIED BY "root";

3.5.4 jar包项目发布

完成以上操作后 ,

  1. 将项目 install打包 , 上传到linux系统上 /usr/local/src/tomcats目中
  2. 运行项目 : java -jar 8081.war

3.5.5 配置nginx.conf

配置linux 服务器集群

#搭建后台服务器.
	server {
		listen 80;
		server_name manage.jl.com;

		location / {
			#配置代理路径
			#proxy_pass http://localhost:8091;
			proxy_pass http://jlLinux;
			proxy_connect_timeout 2;
			proxy_read_timeout 2;
			proxy_send_timeout 2;
		}
	}

	#配置Linux集群
	upstream jlLinux {
		server 192.168.56.129:8081;
		server 192.168.56.129:8082;
		server 192.168.56.129:8083;
	}

3.5.6 实现效果

在Windows 浏览器上 访问 http://192.168.56.129:8081/

在这里插入图片描述


随手笔记

1.快捷切换hosts的小工具

在这里插入图片描述

2.IDEA maven常用的生命周期

clean: 清除target目录

install: 将工程打包到本地仓库,这时本地项目可以依赖,别人是依赖不了的;

package: 将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包;

deploy: 将打包的jar文件上传到私服(如果有私服),此时连接私服的人才可以下载依赖

区别:

  1. package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
  2. install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
  3. deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

4.分布式发布项目

要按严格的顺序进行install : 直接父工程 install (父工程 - common -子工程)

执行过install , 之后做tomcat集群的时候 , 只需修改配置文件的端口 , 重新发布子工程的 install 就可以了

5.bat命令 : 一键启动集群tomcat

使用的是批处理

打开一个新cmd窗口 : start cmd

命令执行完仍然显示cmd窗口 : /k

输出提示信息 : echo

下面是启动三个tomcat服务器的案例 :

start cmd /k "echo 服务器:8081 && java -jar 8081.war "
start cmd /k "echo 服务器:8082 && java -jar 8082.war "
start cmd /k "echo 服务器:8083 && java -jar 8083.war "

6.bat命令 : 关闭nginx

bat 以管理员身份下运行命令

在bat文件开头添加一下内容

cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit

获得管理员权限,关闭nginx

cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
start cmd /k "echo 关闭nginx && nginx -s stop"

7.linux命令

consten7 : 查看ip : ip addr
检查当前路径 : pwd
清屏 : clear
自动补齐名字 : 先输入唯一标识的前缀文件名,再摁 Tab
永久关闭/开防火墙 : chkconfig iptables off/on
关闭/开现有防火墙 : service iptables stop/start

8.linux 传输文件

安装rz插件 : yum -y install lrzsz

10.IPHASH策略(了解)

  1. nginx实现Session共享. 用户的信息紧紧的绑定到了nginx中.耦合性高
  2. url重写技术.sessionId=UUID,动态拼接SessionI
  3. IPHASH: 将用户信息(IP地址)动态的与服务器进行绑定.将来用户访问的服务器只有一台

在upstream中 添加 ip_hash;

存在的问题:

  1. 采用IPhash策略可能会造成负载不均
  2. 如果其中某台服务器宕机.则直接影响用户体验

现在用sso(单点登录系统) 来实现一次登录,就可以访问其他相互信任的系统

11.关于杀死tomcat进程

检索服务 : ps -ef |grep java* 查的进程号

强制杀死进程 : kill -9 进程号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值