gitee.com/woood2/luca@v1.0.4/deployments/README.md (about)

     1  
     2  ### 准备Go开发环境
     3  IDE
     4  - Goland(推荐)
     5  - VS Code
     6  - other
     7  
     8  Go版本
     9  - golang 1.14+
    10  
    11  swag插件
    12  ```
    13  go get -u github.com/swaggo/swag/cmd/swag@v1.6.7
    14  export PATH="$PATH:$(go env GOPATH)/bin"
    15  # test
    16  cd cmd/backend && swag init
    17  ```
    18  
    19  protoc命令
    20  ```
    21  # mac
    22  brew install protobuf
    23  protoc --version
    24  libprotoc 3.11.1
    25  
    26  # centos
    27  sudo yum -y install gcc automake autoconf libtool make
    28  sudo yum -y install gcc gcc-c++
    29  wget https://github.com/protocolbuffers/protobuf/releases/download/v3.11.2/protobuf-all-3.11.2.tar.gz
    30  tar zxf protobuf-all-3.11.2.tar.gz
    31  cd protobuf-3.11.2
    32  ./configure -prefix=/usr/local/
    33  make && sudo make install
    34  protoc --version
    35  libprotoc 3.11.2
    36  ```
    37  
    38  protobuf插件
    39  ```
    40  go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
    41  go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
    42  go get google.golang.org/grpc
    43  
    44  # test
    45  cd cmd/micro/internal/grpc/pb && ./protoc.sh server.proto
    46  cd cmd/micro/internal/grpc/grpc_health_v1 && ./protoc.sh health.proto
    47  ```
    48  
    49  ### 引用RPC服务
    50  一套完整的web应用是由主程序(go)和一系列RPC服务(Mysql等)构成的。  
    51  本机调试阶段,开发者通常在IDE中运行go程序,然后引用远程dev环境中的公共RPC实例。  
    52  这些RPC实例的引用地址,可以通过`configs/application.yml`指定。  
    53  
    54  当然,开发者也被允许自行构建RPC服务的本机实例,以进行各种大胆试验。  
    55  关于如何构建本机实例,下文将提供详细指引。
    56  
    57  ##### 基于docker构建
    58  除了少数例外,绝大多数的RPC服务都可以基于docker构建。  
    59  
    60  配置
    61  - `docker/docker-compose.yml`
    62  - `docker/prometheus.yml`
    63  
    64  常用命令
    65  - 进入docker目录:`cd deployments/docker`
    66  - 构建并且启动:`docker-compose up -d`
    67  - 停止:`docker-compose stop`
    68  - 重新启动:`docker-compose restart`  
    69  - 添加/更新单个容器 `docker-compose up -d nginx`
    70  - MAC查看端口号 `netstat -avnp tcp|grep LISTEN`
    71  - Linux查看端口号 `netstat -tlnp`
    72  
    73  服务清单及内存开销
    74  - kibana:68 MB
    75  - elastic-search:539.4 MB (java "ES_JAVA_OPTS=-Xms256m -Xmx512m") 
    76  - prometheus:46.5 MB
    77  - zookeeper:62 MB
    78  - kafka:370 MB (scala & java,KAFKA_HEAP_OPTS=-Xmx512m -Xms128m)
    79  - kafka-manager 250 MB
    80  - consul 18.9 MB
    81  - hystrix-dashboard 376.2 MB
    82  - redis 1.9 MB
    83  - mongo 34.4 MB
    84  - mysql 247.3 MB
    85  - zipkin 206.2 MB
    86  - 内存总计:2GB(取自某一次运行快照,不含docker固有开销)
    87  
    88  ##### 基于原生构建
    89  出于各种原因,建议采用原生方式构建以下这些程序。
    90  - go程序本身:直接在IDE中运行,或者`go build`后直接运行二进制文件
    91  - fluentd:详见 [deployments/EFK.md](https://gitee.com/woood2/luca/blob/master/deployments/EFK.md)  
    92  - consul-template:详见 [deployments/consul-template.md](https://gitee.com/woood2/luca/blob/master/deployments/consul-template.md)
    93  
    94  ##### 初始化
    95  Mysql  
    96  1. 创建 schema `luca`
    97  2. 执行 [scripts/init.sql](https://gitee.com/woood2/luca/blob/master/scripts/init.sql)
    98  
    99  mongo
   100  ```
   101  1. 管理员连接
   102  mongodb://admin:123456@{ip}:27017/
   103  
   104  2. 创建db
   105  use luca
   106  
   107  3. 创建用户
   108  use admin
   109  db.createUser({
   110  user : "woood2",
   111  pwd : "123456",
   112  roles: [ { role : "readWrite", db : "luca" } ]
   113  })        
   114  
   115  4. disconnect 客户端 && 重启 mongo
   116  
   117  5. 用户连接
   118  mongodb://woood2:123456@{ip}:27017/luca
   119  ```
   120  
   121  kafka-manager
   122  1. 访问web后台 `{ip}:9000` admin/123456
   123  2. 手动添加kafka集群,勾选 `Enable JMX Polling`,以及 `Poll consumer information `
   124  3. 补充:不需要设置JMX Port,哪怕kafka启用的JMX Port不是常用的9999
   125  3. 手动创建topic "luca_greet"  50 partition
   126  
   127  prometheus 时区设置
   128  1. 访问prometheus后台`http://{ip}:9090`
   129  2. 在Graph页面勾选 `use local time`,以正确显示本地时区
   130  
   131  hystrix-dashboard 设置
   132  1. 访问web后台 `http://{ip}:8181/hystrix`
   133  2. 输入hystrix metrics的端点,例如 `http://{ip}:8282`
   134  
   135  EFK 配置及使用
   136  - 详见 [deployments/EFK.md](https://gitee.com/woood2/luca/blob/master/deployments/EFK.md)