You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

9.0 KiB

AG服务安装

1、基础环境(以debian为例)

1.1、基本能力安装

# 安装curl,下面也有安装
sudo apt install curl
# 可选
sudo apt install lrzsz
# 安装 https curl等工具、库
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2

1.2、docker

  1. 安装docker
# 1、添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
# 或是以下这个
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


# 2、设置 Docker 的 APT 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
# 或是使用这个
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


# 3、更新索引
sudo apt-get update
# 4、安装 Docker
sudo apt-get install docker-ce

  1. 配置及启动docker
# 添加当前用户到docker组中
sudo usermod -aG docker xxx
# 启动docker
systemctl start docker
# 开机启动
systemctl enable docker
# 验证
docker --version

  1. 镜像仓库

    • 默认的仓库Docker Hub,如果有需要配置自己或加速的镜像仓库地址可通过以下操作配置,目前国外的无需配置 sudo nano /etc/docker/daemon.json

    • 内容:

    {
        #本地私有镜像仓库
        "insecure-registries":["harbor.jiagutech.com"],
        #公有仓库
        "registry-mirrors": ["https://a8gtbrrd.mirror.aliyuncs.com"]
    }
    
  2. 创建桥接网络,后续docker-compose进行容器编排部署时需要使用此网络,同一个网络中的容器可以通过容器名称进行访问,而不需写死ip docker network create --driver=bridge jiagu

1.3、docker-compose

  1. 安装软件,通过以下命令下载docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composewget https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-$(uname -s)-$(uname -m)

    如果以上命令下载失败,需要手动去下载,然后放到/usr/local/bin目录下

  2. 验证是否成功 docker-compose --version

  3. docker-compose的配置

    1. 中间件 #6.1、middleware的docker-compose.yml
    2. AG服务 #6.2、AG相关服务的docker-compose.yml

2、中间件

2.1、mysql

  1. init脚本,需要挂载到/docker-entrypoint-initdb.d的目录下,这样mysql容器启动时会执行脚本,可能有语句执行不成功,需要自己手动去执行
CREATE USER 'jiagu'@'%' IDENTIFIED BY 'jiagu@1058';
CREATE USER 'canal'@'%' IDENTIFIED BY 'canal';
GRANT ALL PRIVILEGES ON *.* TO 'jiagu'@'%';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;
CREATE DATABASE main_drone_jiagu ;
CREATE DATABASE framework_db ;
  1. 设置my.conf,允许主从同步
[mysqld]
# 开启binlog
log-bin=mysql-bin
# 选择ROW(行)模式
binlog-format=ROW
# 配置MySQL replaction需要定义,不要和canal的slaveId重复
server_id=1
  1. 数据库数据导入

2.2、redis

  1. 批量删除key redis-cli -n 15 -a Jiagu0158 keys 'fight*'|xargs redis-cli -n 15 -a Jiagu0158 del

2.3、tdengine

  1. 创建用户 create user jiagu pass 'jiagu2058' ; show users;
  2. 创建数据库 create database track_db; create database track_hot_db_xxxx_xx_xx; #xxxx_xx_xx为当天日期
  3. 创建超级表 CREATE STABLE track (tsTIMESTAMP,latDOUBLE,lngDOUBLE,altINT,heightINT,hvelINT,vvelINT,satelliteINT,loctypeINT,yawINT,pitchINT,rollINT,onairBOOL,ftimeINT,areaFLOAT,flowINT,doseINT,warningINT,pump INT) TAGS (droneid VARCHAR(50))

2.4、rabbitmq

2.5、meilisearch

2.6、canal

3、Framework

4、Center

4.1、udp服务

  1. 增加对应环境的yml文件
# 1.需要悠mysql的地址及用户名密码
# 2.修改tdengine的地址及用户名密码
# 3.redis的地址及密码
# 4.rabbitmq的地址及密码
# 5.framework服务的地址及密码
  
  1. pom中添加对应的profile节点
  2. logback-spring.xml添加对应的springProfile节点

5、AG服务

6、附录

6.1、middleware的docker-compose.yml

version: '3'

services:
  mysql:
    image: mysql/mysql-server:8.0.22
    container_name: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: Jiagu*2058
      MYSQL_DATABASE: main_drone_jiagu
    ports:
      - "3306:3306"
    command:
      --default-authentication-plugin=mysql_native_password
      --lower_case_table_names=1
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
    volumes:
      - /home/azureuser/data/mysql/data:/var/lib/mysql
      - /home/azureuser/data/mysql/conf/my.cnf:/etc/mysql/my.cnf
      - /home/azureuser/data/mysql/logs:/var/log/mysql
      - /home/azureuser/data/mysql/mysql-files:/var/lib/mysql-files
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
  redis:
    image: redis:6.2.14
    container_name: redis
    ports:
      - 6379:6379
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /home/azureuser/data/redis/data:/data:rw
    command: "redis-server --requirepass Jiagu0158  --appendonly yes"
    privileged: true
    restart: always

  rabbitmq:
    restart: always
    image: rabbitmq:management
    container_name: rabbitmq
    hostname: rabbit
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      TZ: Asia/Shanghai
      RABBITMQ_DEFAULT_USER: jiagu
      RABBITMQ_DEFAULT_PASS: jiagu2058
    volumes:
      - /home/azureuser/data/rabbitmq/data:/var/lib/rabbitmq

  tdengine:
    restart: always
    image: tdengine/tdengine:3.2.2.0
    container_name: tdengine
    hostname: tdengine 
    ports:
      - 6030-6041:6030-6041
      - 6030-6041:6030-6041/udp
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /home/azureuser/data/tdengine/data:/var/lib/taos
      - /home/azureuser/data/tdengine/log:/var/log/taos
      - /home/azureuser/data/tdengine/client:/tmp/
  meilisearch:
    restart: always
    image: getmeili/meilisearch:v1.5.1
    container_name: meilisearch
    ports:
      - 7700:7700
    environment:
      TZ: Asia/Shanghai
      MEILI_MASTER_KEY:
    volumes:
      - /home/azureuser/data/meilisearch/data:/meili_data
  canal-server:
    image: canal/canal-server
    container_name: canal-server
    privileged: true
    restart: always
    depends_on:
      - mysql
    ports: 
      - 11111:11111
    volumes:
      - /home/azureuser/data/canal/example/instance.properties:/home/admin/canal-server/conf/example/instance.properties
      - /home/azureuser/data/canal/log/:/home/admin/canal-server/log/canal/ 
networks:
  default:
    external: true
    name: jiagu

6.2、AG相关服务的docker-compose.yml

version: '3'

services:
  drone:
    build:
      context: ./ag/drone
      dockerfile: Dockerfile
    container_name: drone
    hostname: drone
    restart: always
    ports:
      - "8083:8083"
    volumes:
      - /home/azureuser/service/logs/drone:/app/log
  tftz:
    build:
      context: ./ag/tftz
      dockerfile: Dockerfile
    container_name: tftz
    hostname: tftz
    restart: always
    ports:
      - "8085:8085"
    volumes:
      - /home/azureuser/service/logs/tftz:/app/log
  oper:
    build:
      context: ./ag/oper
      dockerfile: Dockerfile
    container_name: oper
    hostname: oper
    restart: always
    ports:
      - "8084:8084"
    volumes:
      - /home/azureuser/service/logs/oper:/app/log
  user:
    build:
      context: ./ag/user
      dockerfile: Dockerfile
    container_name: user
    hostname: user
    restart: always
    ports:
      - "8082:8082"
    volumes:
      - /home/azureuser/service/logs/user:/app/log
  route:
    build:
      context: ./ag/route
      dockerfile: Dockerfile
    container_name: route
    hostname: route
    restart: always
    ports:
      - "8088:8088"
    volumes:
      - /home/azureuser/service/logs/route:/app/log
  canal:
    build:
      context: ./ag/canal
      dockerfile: Dockerfile
    container_name: canal
    hostname: canal
    restart: always
    ports:
      - "8012:8012"
    volumes:
      - /home/azureuser/service/logs/canal:/app/log
  udp:
    build:
      context: ./center/udp
      dockerfile: Dockerfile
    container_name: centerudp
    restart: always
    ports:
      - "5003:5003"
      - "9527:9527/udp"
    volumes:
      - /home/azureuser/service/logs/udp:/app/log
  framework:
    build:
      context: ./framework/framework
      dockerfile: Dockerfile
    container_name: framework
    hostname: framework
    restart: always
    ports:
      - "9002:9002"
    volumes:
      - /home/azureuser/service/logs/framework:/app/log