CooCare服务器部署 - housekeeper-software/coocare GitHub Wiki

简介

现在全部改成docker-compose部署方式,比较简单。  
以前是将所有的程序放在一个镜像里,这个管理和维护比较复杂。现在将三个程序分为三个镜像:  
registry.cn-shanghai.aliyuncs.com/smartlife-docker/messageroute:latest: usercenter之间的消息转发  
registry.cn-shanghai.aliyuncs.com/smartlife-docker/servicecenter:latest:工程师服务器  
registry.cn-shanghai.aliyuncs.com/smartlife-docker/usercenter:latest:用户登录服务器  
一般,我们会启动2-3个usercenter容器,servicecenter只有一个,messageroute只有一个 
具体的架构方面的问题,可以看code table下的架构图 

新服务器初始化

为可靠起见,新服务器系统必须为Debian 10.9。
需要将证书复制到 cert 目录,名字是 coocare.pem(免密)
初始化过程包含安装docker和docker-compose,以及haproxy和将配置文件复制到指定的位置

#!/bin/bash

function docker_install(){
	echo "check docker exist......"
	docker -v
    if [ $? -eq  0 ]; then
        echo "docker installed already"
    else
    	echo "prepare install docker..."
        curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
        echo "docker install done"
    fi
}

apt-get update
apt-get -y install apt-utils gnupg ca-certificates procps net-tools wget curl vim unzip tcpdump
 

echo "fs.file-max=102400" >> /etc/sysctl.conf
echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf
echo "root soft nofile 204800" >> /etc/security/limits.conf
echo "root hard nofile 204800" >> /etc/security/limits.conf
echo "evan soft nofile 204800" >> /etc/security/limits.conf
echo "evan hard nofile 204800" >> /etc/security/limits.conf

sysctl -p

apt-get -y install haproxy


mkdir -p /etc/docker
cp daemon.json /etc/docker/daemon.json

echo "prepare install docker"
docker_install

echo "prepare install docker-compose"
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version


cp ./conf/haproxy.cfg /etc/haproxy/haproxy.cfg

#copy coocare cert
mkdir -p /etc/cert
cp cert/coocare.pem /etc/cert/coocare.pem
 
mkdir -p /usr/local/coocare/messageroute/etc
mkdir -p /usr/local/coocare/servicecenter/etc
mkdir -p /usr/local/coocare/usercenter/etc
 
cp ./conf/messageroute.json /usr/local/coocare/messageroute/etc/conf.json
cp ./conf/servicecenter.json /usr/local/coocare/servicecenter/etc/conf.json
cp ./conf/usercenter.json /usr/local/coocare/usercenter/etc/conf.json

systemctl restart haproxy

修改配置

在docker-compose.yml所在目录下,执行如下命令:
touch .env
然后在.env文件写入:
REDIS=redis的配置
MYSQL=mysql的配置
PUSHURL=推送url
STATEURL=工程师状态url

构建

执行deploy.sh 即可完成
验证配置是否正确: 
容器启动之后,在如下的位置:
/usr/local/coocare/sevicecenter/etc/
/usr/local/coocare/usercenter/etc
以上目录下有以serverid开头的 json文件,就是容器当前使用的配置,检查配置是否正确

usercenter扩展

如果部署在单独的服务器上,只要从上面复制一个过去就可以了,不同的服务器可以使用相同的端口。  

在docker-compose.yml增加usercenter,需要修改的地方: 
 usercenter-bjucc: 这个要改  
 - /usr/local/coocare/usercenter/c/log:/app/log,将其中的c换成别的,确保日志不会输出到其他容器的文件里  
    - "15888:13188" #tcp listen port 前面的换个端口,后面的不要改,所有容器使用同样的内部端口  
    - "15889:13189" #websocket listen port 前面的换一个端口。。。。  

- COOCARE_SERVER_ID=bjucc: serverid要改,确保唯一性,redis的里key    
      ipv4_address: 172.18.0.16,换一个ip,这个是虚拟网桥上的ip,换其他的ip  

修改haproxy.cfg  
listen usercenter-websocket-10889  
    增加 server websrv2 127.0.0.1:15889 check
listen usercenter-tcp-10888  
    增加 server s2 127.0.0.1:15888 weight 1 maxconn 200000 check  send-proxy
#重启 haproxy  
systemctl restart haproxy