dubbo-zookeeper単機およびクラスタ構築

11754 ワード

プロジェクトが大きくなって、分布式の配置を始めて、dubboの使用を学んで、dubboバージョンの使用の2.8.4,zookeeperバージョンは3.4です.6
zookeeper 3をインストールします.4.6(単機)
zookeeperをダウンロード:http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/ 
/usrディレクトリの下にzookeeperフォルダを作成し、zookeeperを解凍して/usr/zookeeper/ディレクトリの下に移動します.
tar -zxvf ./zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6 /usr/zookeeper/zookeeper-3.4.6/

環境変数の設定
export PATH=/usr/zookeeper/zookeeper-3.4.6/bin:$PATH

zookeeperのプロファイルはzooです.cfg、だからconfディレクトリの下に入ってzoo_をコピーしますsample.cfgはzooと改名した.cfg
cp zoo_sample.cfg zoo.cfg

dubbo-zookeeper 单机以及集群搭建_第1张图片
ここまでで構成が完了しましたので、簡単でしょう
zookeeperの起動
/usr/zookeeper/zookeeper-3.4.6/bin/zkServer.sh start 


 
dubbo管理コンソールdubbo-adminのインストール
ダウンロード先:https://github.com/dangdangdotcom/dubbox
自分でmavenパッケージを使う必要がありますが、
私のここは梱包したwarがあって、ダウンロードして直接使います
WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181

warパッケージをtomcat/webappsに入れてtomcatを起動し、
ブラウザのアクセス先:http://192.168.106.19:8080/dubbo-admin
デフォルトアカウント:root
デフォルトパスワード:root
dubbo-zookeeper 单机以及集群搭建_第2张图片
dubboモニタdubbo-monitorのインストール
ダウンロード先:https://github.com/dangdangdotcom/dubbox
自分でmavenパッケージを使う必要がありますが、
こちらに改良してパッケージしたwarがあり、ダウンロードしてそのまま使用します.
アプリケーションを変更します.properties
dubbo.application.name=dubbo-monitor
dubbo.application.owner=
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=7070

tomcatでtomcatを起動する
ブラウザアクセス:http://192.168.106.19:8080/dubbo-monitor/
デフォルトアカウント:admin
デフォルトパスワード:admin
dubbo-zookeeper 单机以及集群搭建_第3张图片
 
構成が完了しました.
次はコード部分です
コードはspringboot無xml構成方式を用いる.
コードディレクトリ構造
dubbo-zookeeper 单机以及集群搭建_第4张图片
 
mavenモジュールはここで詳しく言わないで、できないなら先に勉強してもいいです.
サービスプロバイダdubbo-provider
maven依存

        
            io.dubbo.springboot
            spring-boot-starter-dubbo
            1.0.0
        

        
        
            com.alibaba
            dubbo
            2.8.4
            
                
                    log4j
                    log4j
                
            
        

        
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        

        
        
            com.bwton
            dubbo-interface
            0.0.1-SNAPSHOT
        

application.yml構成
server:
  port: 8081

## Dubbo   
spring:
  dubbo:
    application:            #    ,          ,              。
      name: dubbo-provider
      monitor:  #   monitor  
        protocol: registry
    registry:                 #      ,              。
      address: zookeeper://192.168.106.19:2181
    protocol:     #    ,             ,        ,       。
      name: dubbo
      port: 20880
    scan: com.bwton.dubbo.provider.service.impl  #            package

サービス実装クラス
package com.bwton.dubbo.provider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.bwton.dubbo.pojo.Do.UserDO;
import com.bwton.dubbo.pojo.vo.UserVO;
import com.bwton.dubbo.service.TestService;
import org.springframework.beans.BeanUtils;

/**
 * @author XueXianlei
 * @Description:
 * @date 2018/10/8 14:51
 */
@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {

    @Override
    public UserVO getUser(String userName) {
        if (null == userName) {
            return null;
        }
        UserDO userDO = new UserDO();
        userDO.setId(1);
        userDO.setUserName(userName);
        UserVO userVO = new UserVO();
        BeanUtils.copyProperties(userDO, userVO);
        return userVO;
    }
}

 
サービス消費者dubbo-consumer
maven依存はプロバイダと同じです
application.yml構成
server:
  port: 8082

spring:
  dubbo:
    application:            #    ,          ,              。
      name: dubbo-consumer
      monitor:  #   monitor  
        protocol: registry
    registry:                 #      ,              。
      address: zookeeper://192.168.106.19:2181
    protocol:     #    ,             ,        ,       。
      name: dubbo
      port: 20880
    scan: com.bwton.dubbo.consumer.controller  #            package
    consumer:
      check: false

コード実装
package com.bwton.dubbo.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.bwton.dubbo.pojo.vo.UserVO;
import com.bwton.dubbo.service.TestService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author XueXianlei
 * @Description:
 * @date 2018/10/8 15:06
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @Reference(version = "1.0.0")
    private TestService testService;

    @RequestMapping("/getUser")
    public UserVO getUser(String userName) {
        UserVO user = testService.getUser(userName);
        return user;
    }
}

サービスプロバイダを起動し、サービス消費者を起動すれば呼び出すことができます.
dubbo-zookeeper 单机以及集群搭建_第5张图片
 
次にクラスタ構築について述べる
zookeeper 3をインストールします.4.6(クラスタ)
ここで使用する擬似クラスタ、すなわち1つのサーバ(サーバが限られている)
zookeeper-3.4をコピーします.6 3点、それぞれ
zookeeper-3.4.6-server1
zookeeper-3.4.6-server2
zookeeper-3.4.6-server3

zookeeper-3.4.6-server 1距離
ディレクトリに入り、dataとlogsの2つのフォルダを作成します.
cd zookeeper-3.4.6-server1
mkdir data
mkdir logs

修正zoo.cfgファイル
zookeeper-3.4.6-server1
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.6-server1/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6-server1/logs
clientPort=2181
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

zookeeper-3.4.6-server2
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.6-server2/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6-server2/logs
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

zookeeper-3.4.6-server3
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.6-server3/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.6-server3/logs
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889

 
パラメータの説明
initLimit: zookeeper        server,      leader,       server follower. initLimit          , follower leader         .         5,        5 tickTime,  5*2000=10000ms=10s.

syncLimit:      leader follower      ,             .         2,        2 tickTime,  4000ms.

server.X=A:B:C   X     ,        server. A  server   IP  . B   server     leader          . C    leader       .            ,     server B, C      .

ServerID ID IDの作成
修正以外はcfgプロファイル、クラスタモードでもう一つのファイルmyidを配置し、このファイルはdataDirディレクトリの下で、このファイルの中に1つのデータがAの値で、上のプロファイルの中でzoo.cfgで構成されたdataDirパスにmyidファイルを作成
echo "1" > /usr/zookeeper/zookeeper-3.4.6-server1/data/myid
echo "2" > /usr/zookeeper/zookeeper-3.4.6-server2/data/myid
echo "3" > /usr/zookeeper/zookeeper-3.4.6-server3/data/myid

zookeeperの起動
/usr/zookeeper/zookeeper-3.4.6-server1/bin/zkServer.sh start 
/usr/zookeeper/zookeeper-3.4.6-server2/bin/zkServer.sh start 
/usr/zookeeper/zookeeper-3.4.6-server3/bin/zkServer.sh start 

 
dubbo-admin dubboを修正する.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181|zookeeper://127.0.0.1:2182|zookeeper://127.0.0.1:2183

dubbo-monitor修正アプリケーション.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181|zookeeper://127.0.0.1:2182|zookeeper://127.0.0.1:218

tomcatの再起動
dubbo-zookeeper 单机以及集群搭建_第6张图片
dubbo-zookeeper 单机以及集群搭建_第7张图片
 
コード登録センターのアドレスが変更され、zookeeperクラスタの構成に変更され、プロバイダと消費者が変更されます.
server:
  port: 8082

spring:
  dubbo:
    application:            #    ,          ,              。
      name: dubbo-consumer
      registries[0]: #      ,              。
        address: zookeeper://192.168.106.19:2181
      registries[1]:
        address: zookeeper://192.168.106.19:2182
      registries[2]:
        address: zookeeper://192.168.106.19:2183
      monitor:  #   monitor  
        protocol: registry
    protocol:     #    ,             ,        ,       。
      name: dubbo
      port: 20880
    scan: com.bwton.dubbo.consumer.controller  #            package
    consumer:
      check: false

クラスタ構築も完了した.