当前位置:首页 » 云服务器 » 动态负载服务器如何实现代码同步

动态负载服务器如何实现代码同步

发布时间: 2023-07-15 04:20:05

㈠ 两台服务器的数据同步如何实现

1.安装CentOS7.0yum install ssh 安装SSH协议yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同巧渣困步孝念多台主机间的文件)service sshd restart 启动服务任务梁蚂

㈡ 如何把测试服务器上的代码通过svn同步到正式服务器上

您好,最简单的办法,将SVN服务器和测试服务器架设在同一台主机上,然后编辑SVN的post-commit钩子脚本,这个钩子是在每次成功commit后由SVN服务器自动调用执行的,存放在SVN服务器上该版本库的hooks文件夹下,编辑这个脚本,调用svn的checkout或者update,在SVN服务器主机上得到一个最新版的SVN客户端文件夹,接着通过这个脚本调用编译、部署指令,部署到测试服务器指定的文件夹,这就ok了。这样每次commit后就会自动发布一个新的测试版到测试服务器上。
当然了,也可以用操作系统的定时任务来做这个,来定时发布新测试版。

㈢ 关于Nginx负载均衡目录同步问题

近期外包接单,做了一个简单的系统,本以为如此简单一个Tomcat就足以满足,结果客户要求需要两台服务器负载均衡,之前负载均衡都是由专门的人负责,第一次自己实现Nginx,走了不少弯路。

由于项目组有附件上传的功能,没有专门的文件服务器,将附件都存放在了ROOT底下,负载均衡后发现经常找不到图片,明显是因为两台服务器资源不同步的问题造成的,于是开始研究服务器目录同步,使用Rsync+Sersync实现目录同步,具体步骤:

1:制定两台服务器中的一台为主服务器(安装软件rsync+sersync,但是不需要启动rsync),另一台为从服务器(安装软件rsync,需要启动rsync)

2:从服务器安装完rsync需要对/etc/rsyncd.conf 进行配置:

uid = root                                  #拥有目录权限用户

gid = root                                  #拥有目录权限的组

use chroot = no                         #内网使用可以不用配置

max connections = 200              #最大连接数  

timeout = 300                               #超时时间

pid file = /var/run/rsyncd.pid              #启动进程写入此PID文件

lock file = /var/run/rsyncd.lock            #lock文件来配合最大连接数参数

log file = /var/log/rsyncd.log               #日志文件

ignore errors = yes                         #忽略I/O错误

read only = false                           #允许读写      

list = false                                #不列出列表

hosts allow = 192.168.1.0/24                #允许网段

hosts deny = *                              #拒绝其他网段

auth users = users                          #认证用户

secrets file = /opt/app/rsyncd/auth.pass    #密码文件

[web]                                       #同步目录

path = /backup/web

设置 /opt/app/rsyncd/auth.pass文件格式为user:password

给 /opt/app/rsyncd/auth.pass添加600权限 chmod 600  /opt/app/rsyncd/auth.pass

启动rsync  rsnyc --daemon

3:主服务器部署

主服务器安装完sersync后需要配置confxml.xml,在sersync的安装目录下

<sersync>

    <!--<remote ip="192.168.8.39" name="tongbu"/>-->

    <!--<remote ip="192.168.8.40" name="tongbu"/>-->

    </localpath>

     <rsync>

     <commonParams params="-artuz"/>

       <timeout start="false" time="100"/><!-- timeout=100 -->

        <ssh start="false"/>

        </rsync>

<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>

<!--default every 60mins execute once-->

<crontab start="false" schele="600"><!--600mins-->

 <crontabfilter start="false">

   <exclude expression="*.php"></exclude>

  <exclude expression="info/*"></exclude>

            </crontabfilter>

        </crontab>

        <plugin start="false" name="command"/>

    </sersync>

启动sersync :/opt/soft/sersync/sersync/sersync2 -d -r -o /opt/soft/sersync/sersync/confxml.xml

location ~ .*\.(gif|jpg|jpeg|png|flv|mp3)$ { #静态

          proxy_pass http://192.168.1.12:80/;

        }

㈣ OpenResty 动态负载均衡

在之前提到的OpenResty/Nginx的负载均衡当中,当服务器启动之后,upstream中的上游服务器就是固定死的了,做不到动态的变更。这里面说到的变更,其实更多指的是增加机器。因为当上游服务器不可用时,upstream会自动将服务器摘除,但是当新增服务器时,upstream就做不到了。传统的负载均衡办法,就是能是修改配置,然后重启服务。下面介绍一下动态负载均衡的方式,一种是通过动态重启服务;另外一种是通过代码的方式动态拉取服务器列表。

Consul是一个分布式服务注册与发现系统。这里面使用Consul来管理上游服务器,当服务器启动时将其注册到注册中心去,当服务关闭时从注册中心列表中剔除。这里面需要注意一点的是:当上游服务器关闭时,Consul本身不会自动从列表中剔除,而是需要在服务器关闭前主动向Consul发起删除服务。

Consul有以下特性:

通过Consul可以获取到upstream中的上游服务器列表,下面要做的事情就是生成upstream中的模板了。这里就需要用到Consul-templete,它可以使用HTTP长轮询实现变更触发和配置更改。从而可以根据Consul服务器列表动态生成配置文件,然后去重新启动OpenResty/Nginx即可。

Consul+Consul-templete 就如上面所说的,是一种监听服务器列表变更,然后动态生成upstream模板,重启服务器。

Consul-Server

笔者使用的是MAC,下面所进行的操作都是基于MAC系统的。首先需要安装Consul如下:

安装完成之后,可以通过如下命令启动Consul服务:

启动完成之后,可以通过如下地址:localhost:8500/ui。访问Consul的Web界面:

可以使用HTTP的方式向Consul注册一个服务:

Consul-template

Consul-template的作用是生成upstream配置模板,安装命令如下:

然后在nginx.conf同级目录下创建moguhu_server.ctmpl

重启OpenResty脚本如下:reboot.sh

然后nginx.conf配置如下:

上游服务器

上游服务器upstream中使用的是Spring Boot实现的,其核心代码如下所示:

笔者在实验时,Consul版本的问题,造成在JVM停止时,没有执行删除服务的操作。因此附上下面的pom依赖

测试验证

1、启动Consul

2、启动Consul-template

3、启动2台upstream服务器

然后你会发现在nginx.conf的同级目录下生成了moguhu_server.conf文件,内容如下:

当手动停掉一台服务器时,配置又会变更为如下:

此时reboot.sh脚本会自动触发执行,如下所示:

上面的方式实现动态负载均衡在配置较多的时候会有一些问题,比如配置较多时,OpenResty重启的速度就会变慢。所以通过Lua脚本的方式可以规避掉重启这一步骤。

使用Lua实现时,与上面的组件相比Consul-templete就不需要了。通过Consul的 http://127.0.0.1:8500/v1/catalog/service/moguhu_server 接口就可以获取到服务的列表,如下所示:

这一方式当中主要就是OpenResty里面的相关配置。

OpenResty 配置

upstreams.lua

nginx.conf

上面通过balancer_by_lua_block去动态的设置了,upstream的服务器列表。然后启动OpenResty就可以了。

参考:《亿级流量网站架构核心技术》

热点内容
服务器1u能连接几台电脑 发布:2025-02-07 18:50:02 浏览:152
立人编译 发布:2025-02-07 18:48:32 浏览:763
日产途达四驱的有哪些配置 发布:2025-02-07 18:42:02 浏览:831
服务器搭建镜像站 发布:2025-02-07 18:41:55 浏览:376
游戏上云成标配云服务器该怎么选 发布:2025-02-07 18:26:13 浏览:141
哪个安卓手机自带系统没有广告 发布:2025-02-07 18:22:36 浏览:724
电脑开机后一直在配置更新怎么进入系统 发布:2025-02-07 18:17:43 浏览:12
新浪上传视频在哪 发布:2025-02-07 18:17:38 浏览:558
外汇点差算法 发布:2025-02-07 18:16:41 浏览:81
我的世界各种服务器核心的区别 发布:2025-02-07 18:15:52 浏览:678