docker安装tars集群

纵然是瞬间 提交于 2020-12-04 17:48:40

之前部署tars是自己编译安装的,最近想把原来的tars集群迁移到新的版本,打算用docker部署的方式,所以搞了台服务器试了下,发现docker的方式安装还是很方便的,所以把过程记录下来

1. 安装docker

这个去网上找相关文档吧,这里就不细说了

2. 创建虚拟子网

# 创建一个名为tars的桥接(bridge)虚拟网络,网关172.25.0.1,网段为172.25.0.0
docker network create -d bridge --subnet=172.25.0.0/16 --gateway=172.25.0.1 tars

3. 运行mysql

sudo docker run -d -p 3306:3306 \
    --net=tars \
    -e MYSQL_ROOT_PASSWORD="tars123" \
    --ip="172.25.0.2" \
    -v /data/framework-mysql:/var/lib/mysql \
    -v /etc/localtime:/etc/localtime \
    --name=tars-mysql \
    mysql:5.6

4. 运行tars框架

sudo docker pull tarscloud/framework:v2.4.10
sudo docker run -d \
    --name=tars-framework \
    --net=tars \
    -e MYSQL_HOST="172.25.0.2" \
    -e MYSQL_ROOT_PASSWORD="tars123" \
    -e MYSQL_USER=root \
    -e MYSQL_PORT=3306 \
    -e REBUILD=false \
    -e INET=eth0 \
    -e SLAVE=false \
    --ip="172.25.0.3" \
    -v /data/framework:/data/tars \
    -v /etc/localtime:/etc/localtime \
    -p 3000:3000 \
    -p 3001:3001 \
    tarscloud/framework:v2.4.10

4. 安装nginx

sudo docker run -d \
    --name=nginx \
    -v /data/etc/nginx:/etc/nginx \
    -v /data/log:/data/log \
    -p 80:80 \
    nginx:latest

nginx配置

# nginx也是通过docker运行的,把配置文件映射到宿主机器,不然重启后配置会丢失
vi /data/etc/nginx/conf.d/tars.conf

upstream bakend{
    server 172.17.0.1:3000 weight=1; # docker里面访问宿主机的话ip是172.17.0.1, 其实就是容器里面的网关地址
    ip_hash;
}

server {

        listen 80;
        server_name  tars.com;  #改成你自己的域名
        client_max_body_size 100m;
        location / {
            access_log  /data/log/nginx/tars/access.log main;
            proxy_pass http://bakend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

       }

 }

5. 安装框架从节点

sudo docker run -d \
    --name=tars-framework-slave \
    --net=tars \
    -e MYSQL_HOST="172.25.0.2" \
    -e MYSQL_ROOT_PASSWORD="tars123" \
    -e MYSQL_USER=root \
    -e MYSQL_PORT=3306 \
    -e REBUILD=false \
    -e INET=eth0 \
    -e SLAVE=true \     #记得这里要改成true
    --ip="172.25.0.4" \
    -v /data/framework-slave:/data/tars \
    -v /etc/localtime:/etc/localtime \
    tarscloud/framework:v2.4.10

6. 安装tars-node节点

sudo docker pull tarscloud/tars-node:java
6.1 节点-1
sudo docker run -d \
    --name=tars-node-1 \
    --net=tars \
    -e INET=eth0 \
    -e WEB_HOST="http://172.25.0.3:3000" \
    --ip="172.25.0.5" \
    -v /data/node-1:/data/tars \
    -v /etc/localtime:/etc/localtime \
    -p 9000-9010:9000-9010 \
    tarscloud/tars-node:java
6.2 节点-2
sudo docker run -d \
    --name=tars-node-2 \
    --net=tars \
    -e INET=eth0 \
    -e WEB_HOST="http://172.25.0.3:3000" \
    --ip="172.25.0.6" \
    -v /data/node-2:/data/tars \
    -v /etc/localtime:/etc/localtime \
    -p 9101-9109:9101-9109 \
    tarscloud/tars-node:java
    

7. 注意问题

1. 因为我只有一台机器,所以所有docker都是在同一个虚拟子网里,相互之间访问没问题,如果你是多台的话,网络最好使用宿主机的网络,不然就需要自己增加路由规则
--net=host 代表docker使用宿主机网络

8. 服务器

刚好碰到ucloud做活动,撸了一台2核16G的香港服务器,三年才3100块,有兴趣可以去撸一台,记得领卷后再买

双十一活动服务器

无需备案的海外云服务器大促

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!