AIChat 集群部署
网络架构图
部署步骤
文件准备
文件 | 说明 |
nla-agent-setup.tar | AIChat安装包 |
nginx-v1.25.tar | nginx docker镜像 |
cluster.tar | 集群配置参考文件 |
--docker-compose.yml | 单节点启动文件 |
--docker-swarm.yml | propertycenter/aiweb等组件启动文件 |
--docker-swarm-base.yml | mysql/redis/mongo组件组件文件 |
--hosts | /etc/hosts配置参考 |
--resolv.conf | /etc/resolv.conf配置参考 |
--nginx_conf | nginx配置目录 |
– smartbi.ai.conf | nginx配置文件 |
请至钉钉文档查看附件《cluster.tar.gz》
请至钉钉文档查看附件《nginx-v1.25.tar》
服务器信息
服务器主机名 | 服务器ip |
ecs-7295-node1-0001 | 192.168.1.59 |
ecs-7295-node1-0002 | 192.168.1.3 |
...
推荐使用云服务,如果没有在其中一台服务器安装nfs服务,另一台安装nfs客户端,并把aichat的部分目录拷贝到nfs。
在节点192.168.1.59,部署nfs服务
代码块 |
---|
sudo yum install nfs-utils rpcbind - |
...
y sudo systemctl start |
...
rpcbind sudo systemctl enable |
...
rpcbind sudo systemctl start nfs- |
...
server sudo systemctl enable nfs- |
...
server sudo systemctl status |
...
rpcbind sudo systemctl status nfs-server |
配置共享目录
代码块 |
---|
mkdir /dafa_ |
...
nfs sudo vi /etc/ |
...
exports # 文件内容 /data_nfs *(rw,sync,insecure,no_subtree_check,no_root_squash) # |
...
加载nfs配置 sudo exportfs |
...
-r # 验证共享 sudo exportfs -v |
拷贝AIChat目录到nfs
代码块 |
---|
cd /data/smartbi- |
...
nla cp -ra services scripts data /data_nfs |
在节点192.168.1.3,安装nfs客户端并挂载目录
代码块 |
---|
yum install nfs-utils - |
...
y mkdir -p /data_ |
...
nfs mount -t nfs -o vers=3,nolock 192.168.1.59:/data_nfs /data_ |
...
nfs # 验证挂载 df -h |
加载nginx 镜像
注:如果使用外部的nginx或者其他东方通THS,则不需要此步骤。配置可以参考smartbi.ai.conf。
在节点192.168.1.59
代码块 |
---|
cd /data/ |
...
software docker load -i nginx-v1.25.tar |
配置docker swarm
配置/etc/hosts,名称和ip映射。(每台服务器都需要配置)
- 添加内容192.168.1.59
代码块 |
---|
# 添加内容 192.168.1.59 ecs-7295-node1-0001 ecs-7295-node1- |
...
0001 192.168.1.3 ecs-7295-node1-0002 ecs-7295-node1-0002 |
创建swarm集群
...
代码块 |
---|
# 节点1,设置为leader节点 docker swarm init --advertise-addr 192.168.1. |
...
59 # 运行后,会返回其他节点加入集群的命令 # 节点2执行该命令,设置为worker节点 # 示例 docker swarm join --token SWMTKN-1-3sp127u2zzms62cql5laxi93yrk01m1f64s5ulx4bx67reuwhz-e5j4s1nq0mpnvp9asgmic6jah 192.168.1.59:2377 |
其他命令
#查看当前 Swarm 集群的状态,包括所有节点的信息,可以在任意管理节点上运行docker node ls
为了避免网络配置影响docker 集群的启动速度,可以做以下配置。
修改//etc/resolv.conf,全部注释掉
启动aichat集群
在节点192.168.1.59
拷贝cluster目录中的docker-swarm.yml,docker-swarm-base.yml,nginx.yml,nginx_conf到/data/smartbi-nla。
cp -ra nginx_conf /data/smartbi-nlacp docker-swarm.yml docker-swarm-base.yml nginx.yml /data/smartbi-nla
如果部署的目录不同,则应修改yml文件。
注意:必须修改nginx目录下的smartbi.ai.conf,改成实际的IP。
nginx使用了18080端口,如果该服务器也部署了smartbi,可能会和smartbi端口冲突,酌情进行修改。
由于mysql/redis/mongo是共享服务,所以只需要部署一个实例,其他组件部署两个实例。(在yml中已配置)
在节点192.168.1.59
cd /data/smartbi-nla# 启动基础组件docker stack deploy -c docker-swarm-base.yml smartbi-nla# 等待10秒,启动其他组件docker stack deploy -c docker-swarm.yml smartbi-nla# 启动nginxdocker-compose -f nginx.yml up -d
其他docker命令
- 停止集群docker stack rm smartbi-nla# 停止nginxdocker-compose -f nginx.yml down# 重启某个服务docker service update --force your_service_namedocker service update --force smartbi-nla_aiweb# 查看集群docker stack ls#查看容器列表docker ps#查看容器日志docker logs 容器id#进入容器内部docker exec -it 容器id /bin/shdocker exec -it c9fd007091c7 /bin/sh# 测试容器之间的联通docker exec -it 容器id ping 服务名称docker exec -it e6ceee48c807 ping admin# 查看网络docker network inspect smartbi-nla_smartbi-nla-networkdocker service ls -q | xargs -I {} docker service inspect {} --format '
.Spec.Name
:json .Endpoint.VirtualIPs
'配置AIChat
参考单节点wiki,到AIChat管理后台配置Smartbi服务器地址,大模型,训练图谱。
Smartbi的自然语言配置,应指向nginx 暴露的aiweb地址。
如果smartbi也是集群,则每个smartbi应在config.jsp配置redis,用于会话保持。升级AIChat
1.停止集群:
docker stack rm smartbi-nla
2.解压升级包
tar -xzf nla-agent-upgrade.tar.gz
3.替换services文件
进入共享目录/data_nfs,备份services文件,然后将升级包中的services目录拷贝过来,新的services目录授权chmod 777 -R *
4.启动集群:
cd /data/smartbi-nla# 启动基础组件docker stack deploy -c docker-swarm-base.yml smartbi-nla# 等待10秒,启动其他组件docker stack deploy -c docker-swarm.yml smartbi-nla
5.检查升级
docker ps
结束。