消費者用nginx做負載均衡,提供者用zookeeper自帶功能實現負載均衡


  公司的項目基於阿里的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_order"/>
    <dubbo:registry address="${zookeeper.host}"/>
    <dubbo:protocol name="dubbo" port="-1"/>
    <dubbo:provider timeout="60000" retries="0" threadpool="cached" threads="1000" accepts="1000"/>
    <dubbo:consumer check="false"/>
    <dubbo:annotation package="com.soft.ts"/>
復制代碼

 

服務消費者:

復制代碼
    <!-- dubbo 配置 -->
    <dubbo:application name="ts_admin"/>
    <dubbo:registry address="${zookeeper.host}" />
    <dubbo:protocol name="dubbo" port="-1" />
    <dubbo:consumer check="false" timeout="60000" retries="0"/>
    <dubbo:annotation package="com.soft.ts"/>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM