基于Dubbo的服务提供者与消费者的发布(在虚拟机中)以及使用nginx对项目进行负载均衡优化

在编写好分布式项目后,我们需要对服务提供者\消费者进行打包 ,上传到服务器上进行发布 .现在对整个过程进行总结

服务提供者的发布

在父项目的pom.xml中打包插件添加坐标

需要被打包的项目的pom.xml (需要根据被打包的文件所在地方做出少量的调整)

代码语言:javascript

复制

<build> <plugins> <!-- 指定项目的打包插件信息 --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <!-- 指定打包描述文件的位置:相对项目根目录的路径 --> <!-- assembly打包的描述文件 --> <descriptor>assembly/assembly.xml</descriptor> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <!--用于资源拷贝--> <resource> <directory>src/main/resources/spring</directory> <includes> <include>**/*.xml</include> </includes> <targetPath>META-INF/spring/</targetPath> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <!--<targetPath></targetPath>--> </resource> </resources> </build>

注: 主要注意的是spring配置文件的位置

assembly打包插件分享至百度云

修改打包插件的dubbo.properties文件

host ,指定项目在哪个虚拟机运行 ,一般和发布者在一个虚拟机上面

刷新该项目, 在target目录下, 有个.gz的压缩包 .

出现以后然后打开web ,然后访问

服务消费者的发布

  • 安装了 nginx 服务器
  • 三个tomcat服务器

这一步是第4步的前提 !!!

删除后ROOT文件后 ,将无法访问tomcat 主页, 启动时只能通过日志文件判断是否启动成功 !!!

注意: url所指定的ip是被发布的消费者所在的虚拟机 ,也就是安装了这三台tomcat的虚拟机

上传有点慢, 出现下图说明部署成功!!!

主要是修改访问的url ,配置完成过后,可以通过ip+port进行测试

负载均衡配置

静态资源配置 ,以及访问原理的图解

拓展:nginx keepalive实现nginx集群的高可用

通过nginx的负载均衡配置 , 已经实现了访问消费者项目时 ,被随机的分担到了多个tomcat服务器 . 减轻了服务其的压力 ,而且,当一台tomcat 宕机掉时, 服务仍能够运行 . 但是随之而来的问题是 :万一 nginx服务器挂掉还怎么玩? 这里就引出了nginx keepalive ,作用是实现nginx集群的高可用

https://blog.51cto.com/12922638/2155817

keepalive是在TCP中一个可以检测死连接的机制。

keepalive原理很简单,TCP会在空闲了一定时间后发送数据给对方:

1.如果主机可达,对方就会响应ACK应答,就认为是存活的。

2.如果可达,但应用程序退出,对方就发FIN应答,发送TCP撤消连接。

3.如果可达,但应用程序崩溃,对方就发RST消息。

4.如果对方主机不响应ack, rst,继续发送直到超时,就撤消连接。这个时间就是默认的二个小时。

1.准备两台机器

A机器:192.168.40.128

B机器:192.168.40.130

A级器作为master,B机器作为backup

2.两台机器都安装:keepalived

3.两台机器上都安装nginx

1.更改A机器上的更改keepalived配置文件

清空文件内容

编辑配置文件

添加加以下内容:

2.定义监控脚本

脚本路径在keepalived配置文件中有定义,路径为/usr/local/sbin/check_ng.sh

编辑配置文件:

增加以下内容:

3.脚本创建完之后,还需要改变脚本的权限(不更改权限,就无法自动加载脚本,那就无法启动keepalived服务)

可以手动执行下脚本程序,判断是否有错。

4.启动keepalived服务,并查看是否启动成功

启动不成功,有可能是防火墙未关闭或者规则限制导致的

keepalived使用224.0.0.18作为Master和Backup健康检查的通信IP

这时再来启动keepalived,就会看到keepalived进程服务了

查看keepalived的启动日志:/var/log/messages

启动时发现异常

现在处于故障状态

检查后发现是检查nginx启动状态的脚本出错,更正脚本错误。

6.查看ip地址,使用 ip add 命令,可以查看到vip192.168.40.200

1.自定义B机器keepalived配置文件,更改虚拟IP和主一样的,首先清空B机器keepalived里面自带的配置文件

编辑配置文件:

增加以下内容:

2.定义监控脚本,路径再keepalived里面已定义过

增加以下内容:

3.改动脚本的权限,设置为755权限

4.启动keepalived服务:

浏览器访问vip(虚拟地址),即192.168.40.200,主机正常,访问的是master, 将主机上的keepalived关闭,从即上的vip会开启,使用ip add查看主机上的ip,可以发现在监听192.168.40.200,这是访问nginx会访问到从机上

原文链接:https://cloud.tencent.com/developer/article/1668646

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享