基于Nginx和Zookeeper实现Dubbo的分布式服务

内容预览:
  • 准备在这两套服务器上实现 Dubbo 的 分布式服务,如下图:   &nbsp...~
  • 查了相关资料,说要配置 /etc/hosts~
  •     第一台服务器 1、安装 rpcbind 与 nfs  yum install...~

一、前言

    公司的项目基于阿里的Dubbo 微服务框架开发。为了符合相关监管部门的安全要求,公司购买了华东1、华东2两套异地服务器,一套是业务服务器,一套是灾备服务器。准备在这两套服务器上实现 Dubbo 的 分布式服务,如下图:

    这里只罗列了部分服务器作为参考说明。其中 api 是消费者服务,driver 和 order 是 提供者服务。华东1 和 华东 2 分别是两个局域网,局域网内可用内网通信。两个局域网只能通过外网通信。

二、消费者分布式服务

    消费者的分布式是通过 Nginx 配置负载均衡和反向代理实现的。我们把 Nginx 部署在 华东1 的 api 服务器上,Nginx 的配置如下:

1、负载均衡

    #gzip  on;

upstream tomcatServer {
#华东1服务器走内网
server 192.168.27.101:8680 weight=10;
#华东2服务器走外网
server 139.159.257.207:8680 weight=10;
}

2、反向代理

    # HTTPS server

#
server {
listen
443 ssl;
server_name api.gogo.cn;

ssl_certificate
/usr/local/certapi/api.pem;
ssl_certificate_key
/usr/local/certapi/api.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:
!aNULL:!MD5;
ssl_prefer_server_ciphers on;

proxy_connect_timeout
500;
proxy_send_timeout
500;
proxy_read_timeout
500;
client_max_body_size 200m;
location
/ {
# root html;
# index index.html index.htm;
proxy_pass http://tomcatServer/;
}
}

三、提供者分布式服务

    Dubbo 将 zookeeper 当作注册表来实现微服务框架。zookeeper 其实已经帮我们做好了负载均衡,如上图:我们把不同服务器上 driver、order 同时注册到同一个zookeeper 中,当我们调用 driver、order 服务时,zookeeper 会在两台服务器之间权衡分配,做负载均衡。在 applicationContext.xml 做如下配置…

    <!-- dubbo 配置 -->

<dubbo:application name
="ts_provider_driver"/>
<dubbo:registry address
="zookeeper://139.159.250.7:2181"/>
<dubbo:protocol name
="dubbo" port="-1"/>
<dubbo:provider timeout
="60000" retries="0"/>
<dubbo:consumer check
="false"/>
<dubbo:annotation package
="com.summer.ts"/>

    开始,由于 zookeeper 安装在华东1, 我们把华东1的所有提供者服务都以内网的形式注册到 zookeeper 中,整个华东1的服务是正常运行起来了!但是在部署华东2的服务时,发现华东2在调用华东1相关服务的时候,走的竟然是华东1的内网(自然走不通,报错了)。查了相关资料,说要配置 /etc/hosts。好吧,那就配置吧:

    1、服务器的主机名

    2、配置 /etc/hosts 

vim /etc/hosts

 

        如上,配置上本机 外网地址 和 主机名。

    配置完 /etc/hosts 后,试着部署了华东2的服务,发现还是不行,调用华东1相关服务的时候走的竟然还是内网。咋办嘞?

    最后,没办法,把华东1的相关服务都以外网的形式注册到 zookeeper 中。成功解决问题!

四、Linux 文件共享

    实现分布式服务有个问题就是文件共享。比如我们系统中,将 api 所在的服务器作为图片服务器,那么,华东1 和 华东 2 的图片文件夹就要实现共享,只有这样,访问任意一个api服务才不会出现图片路径不存在的问题。

    第一台服务器

1、安装 rpcbind 与 nfs 

yum install nfs-utils.x86_64

yum install rpcbind

2、编辑export写入共享方的ip与目录

vim /etc/export

写入:/home/wwwroot/upload 139.159.257.207(rw,sync,no_root_squash)

tips:rw 表示读写;sync 表示随时写入同步;no_root_squash 表示如果用户是root,则对该目录具有root权限。

3、启动rpcbind与nfs

service rpcbind start 

service nfs start

    第二台服务器

1、安装nfs

yum install nfs-utils

2、执行挂载命令

mount -t nfs -o rw 139.159.250.7:/home/wwwroot/upload/ /home/wwwroot/upload/

 

 

和大佬一起学习网络安全知识

以上就是:基于Nginx和Zookeeper实现Dubbo的分布式服务 的全部内容

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢^^
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论