GlusterFS 是一个开源的分布式文件系统,如果没有云存储或nfs,可采用glusterfs。
1.安装环境要求
1.1. 集群系统环境
集群地址:
IP | 主机名 | 角色 |
---|---|---|
10.10.35.162 | 10-10-35-162 | Leader |
10.10.35.163 | 10-10-35-163 | work |
10.10.35.164 | 10-10-35-164 | work |
1.2.环境检查
安装权限要求:
安装时用root用户运行或使用具有 sudo权限的用户执行。推荐使用root用户安装
1.2 防火墙配置
所有集群内的主机均需进行防火墙配置。
为了便于安装,建议在安装前关闭防火墙。使用过程中,为了系统安全可以选择启用防火墙,但必须启用Smartbi mpp使用到的相关端口。
1.2.1 关闭防火墙
临时关闭防火墙(立即生效)
1 |
|
...
1 |
|
1.2.2 开启防火墙
相关服务及端口对照表
服务名 | 开放端口 |
---|---|
AIChat | 9060、9081 |
Docker Swarm | 2377、2376、5000、7946、4789、5001 |
GlusterFs | 24007、24008、24009、49152、49153、49154、49155、49156、38465、38466、38467、111 |
...
查看防火墙的配置信息
1 |
|
1.2.3 CPU架构以及指令集确认
输入查看系统的指令
代码块 |
---|
uname -a|grep x86 |
...
出现如下信息则在Smartbi服务器访问NLA服务是正常的。
1.3 设置系统环境
所有集群内的主机均需设置系统环境
1.3.1 关闭selinux
临时关闭selinux,立即生效,不需要重启服务器。
...
1 |
|
部署(AIChat、Nginx、
...
docker swarm、GlusterFs)
2.安装AIChat
(1) 解压安装包
代码块 | ||||
---|---|---|---|---|
| ||||
cd /<安装包路径> tar -xvf nla-setup.tar.gz |
...
在各个AIChat集群节点上安装完AIChat服务后执行sudo bash stop.sh停止服务;
3.安装dockaer swarm
3.1 查看已经安装docker环境
# docker version
3.2 创建Swarm集群并且添加节点
1、Leader主机上初始化swarm。执行 docker swarm init 命令的节点自动成为管理节点
...
docker swarm join-token manager
3.3 查看集群信息
# docker info
# docker node ls
3.4 关闭docker swarm集群
#docker node ls 找到leader节点并在leader节点上执行:
...
docker swarm leave --force
4 搭建GlusterFs集群
如果有nfs网络存储,则直接使用nfs,不需要本步骤。
4.1 安装GlusterFs
4.1.1 在所有节点上安装GlusterFS
sudo yum install -y glusterfs-server
4.1.2 在所有节点上启动并使GlusterFS服务
sudo systemctl start glusterd
sudo systemctl enable glusterd
4.1.3 在所有节点上配置防火墙允许GlusterFS通信
sudo firewall-cmd --permanent --add-service=glusterfs
sudo firewall-cmd --reload
4.1.4 在每个节点上,将其它节点的IP地址添加到信任池中:
sudo gluster peer probe <其它节点的IP地址>
4.1.5 查看集群状态
sudo gluster peer status
4.1.6 在任意node上创建复制卷(卷名:gfs-volume)
例如,创建一个名为gfs-volume的复制卷,副本数为3:
sudo gluster volume create gfs-volume replica 3 \
force
4.1.7 启动卷
sudo gluster volume start gfs-volume
4.1.8 在每个节点上将卷挂载成同样的目录(挂载路径:glusterfs)
sudo mount -t glusterfs <节点IP>:<卷名> /data/glusterfs
4.1.9 检查卷状态
sudo gluster volume info gfs-volume
注意:替换上述脚本中的 node1, node2, node3为你自己环境中的实际节点名或者IP;替换/data/gfs (物理存储路径)为磁盘空间充足的文件路径
4.2 GlusterFs集群同步验证
4.2.1. 测试同步
在任一节点上在/data/glusterfs目录下创建、写入或修改文件,可以在另一节点上看到这些更改
4.2.2. 容错测试
停止2个节点的GlusterFS服务:
#sudo systemctl stop glusterd
在剩余一个节点上继续进行文件操作(增加、修改、删除)
在停止了GlusterFS服务的2节点中仍然能保持数据同步
4.3 GlusterFs共享配置
复制NLA目录到共享存储(具体以实际安装目录)
...
cp -r /data/admin/smartbi-nla/config/ /data/glusterfs/admin/smartbi-nla/config
cp -r /data/admin/smartbi-nla/scripts /data/glusterfs/admin/smartbi-nla/scripts
cp -r /data/admin/smartbi-nla/data /data/glusterfs/admin/smartbi-nla/data
cp -r /data/admin/smartbi-nla/services /data/glusterfs/admin/smartbi-nla/services
sudo chmod 777 -R /data/glusterfs
4.4 GlusterFs命令
4.4.1. 查看GlusterFS卷
gluster volume list
4.4.2. 查看所有卷的信息
gluster volume info
4.4.3. 查看所有卷的状态
gluster volume status
4.4.4. 停止一个卷
gluster volume stop dis-stripe
4.5 配置相关信息
4.5.1 修改docker-compose.yml配置文件
...
cd /data/admin/smartbi-nla/services
vim docker-compose.yml
可参考以下配置文件来修改,具体修改为glusterfs共享目录的路径
4.6. 启动AIChat集群
在Leader节点上启动AIChat集群
启动集群:
cd /data/admin/smartbi-nla
docker stack deploy -c docker-stack.yml smartbi-nla
查看启动集群
docker stack ls
停止集群:
docker stack rm smartbi-nla
4.7 部署Nginx
参考Nginx官方文档 http://nginx.org/en/docs/ 使用源码或者YUM方式部署Nginx。
4.7.1 使用yum方式安装Nginx
...
# yum install -y nginx
通过如下命令,启动、重启与关闭nginx
...
# nginx #启动nginx
# nginx -s reload #重启nginx
# nginx -s quit #关闭nginx
# nginx -t #验证nginx.conf是否存在问题
日志可在 /var/log/nginx 下进行查看
# vi /etc/log/nginx/access.log #访问日志 # vi /etc/log/nginx/error.log #错误日志 |
4.7.1 Nginx 配置
在 /etc/nginx 路径下修改nginx.conf配置文件,可参考以下配置文件
...
# vi /etc/nginx/nginx.conf
这里使用“ip_hash”权重分配模式,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,对于到AIChat产品的session会话,采取该种权重分配较为合适。
3、测试配置文件是否通过
1 |
|
测试通过!
4、重启nginx
1 |
|
4.8 smartbi配置AIChat集群
进入Smartbi服务,进入系统运维--系统选项找到 服务器地址-- Smartbi服务器URL地址 配置项,设置Smartbi集群的地址:
这里以 http://10.10.202.100:8080/smartbi为例。
进入“系统运维--自然语言配置“中设置“自然语言分析的登录地址”,设置AIChat服务地址,集群下此处是配置Nginx代理后的服务器地址”,点击“显示更多设置”:
如果出现设置项则配置成功,此时点击“保存”,保存系统设置;
信息 |
---|
AIChat默认的端口为9060;如需修改端口请依照安装目录下的docker-compose.yml的注释进行修改。 |
信息 |
---|
如果点击“保存“按钮提示报错,请检查一下是否拥有系统配置权限。 |
(4) 配置大语言模型
进入“系统运维--自然语言配置“中设置“使用大模型的版本”
如果客户本身有大模型,则需要找客户问大模型的“设置大模型调用参数”的配置信息
Local_llm/Local
适用于所有OpenAI接口的大模型,例如deepseek
OPEN Al/gpt-3.5-turbo
OPEN Al/gpt-3.5-turbo-1106-ft
Azure/gpt-3.5-turbo
Baidu/ERNlE-Bot-4
Mianbi/cpm-conv
Xunfei/Spark-general 3.5
Qwen/Qwen
1.安装环境要求
1.1. 集群系统环境
集群地址:
...
IP
...
主机名
...
角色
...
10.10.35.162
...
Leader
...
10.10.35.163
...
10-10-35-163
...
work
...
work
1.2.环境检查
安装权限要求:
安装时用root用户运行或使用具有 sudo权限的用户执行。推荐使用root用户安装
1.2 防火墙配置
所有集群内的主机均需进行防火墙配置。
为了便于安装,建议在安装前关闭防火墙。使用过程中,为了系统安全可以选择启用防火墙,但必须启用Smartbi mpp使用到的相关端口。
1.2.1 关闭防火墙
临时关闭防火墙(立即生效)
...
1
...
systemctl stop firewalld
永久关闭防火墙(重启后生效)
...
1
...
systemctl disable firewalld
查看防火墙状态
...
1
...
systemctl status firewalld
1.2.2 开启防火墙
相关服务及端口对照表
...
服务名
...
开放端口
...
AIChat
...
9060、9081
...
Docker Swarm
...
2377、2376、5000、7946、4789、5001
...
GlusterFs
...
24007、24008、24009、49152、49153、49154、49155、49156、38465、38466、38467、111
...
配置完以后重新加载firewalld,使配置生效
...
1
...
firewall-cmd --reload
查看防火墙的配置信息
...
1
...
firewall-cmd --list-all
1.2.3 CPU架构以及指令集确认
输入查看系统的指令
代码块 |
---|
uname -a|grep x86 |
可以看到如下信息,即为正常:
输入查看系统指令集的指令:
代码块 |
---|
cat /proc/cpuinfo|grep avx |
可以看到如下信息,即为正常:
1.2.4 网络环境检查
注意 |
---|
利用ping和telnet的方法无法准确判断是否连通,请务必按照本教程来检查。 |
网络环境检查要确保Smartbi服务器和NLA服务器双向访问正常。
首先确认NLA服务器是否可以连通Smartbi服务:
代码块 | ||||
---|---|---|---|---|
| ||||
curl -L <http|https>://<Smartbi地址> |
出现如下信息则在NLA服务器访问Smartbi服务是正常的。
同理需要在Smartbi安装的服务器上确认AIChat的服务是否连通:
代码块 | ||||
---|---|---|---|---|
| ||||
curl -L <http|https>://<AIChat服务地址> |
出现如下信息则在Smartbi服务器访问NLA服务是正常的。
1.3 设置系统环境
所有集群内的主机均需设置系统环境
1.3.1 关闭selinux
临时关闭selinux,立即生效,不需要重启服务器。
...
1
...
setenforce
0
永久关闭selinux,修改完配置后需要重启服务器才能生效
...
1
...
sed -i
's/=enforcing/=disabled/g'
/etc/selinux/config
温馨提示
建议关闭服务器虚拟内存,避免查询期间使用虚拟内存导致查询变慢和查询异常。
swapoff -a #临时关闭
1.3.2 配置ip和主机名的映射
在/etc/hosts 文件末尾添加:
...
1
2
3
...
10.10
.
35.162
10
-
10
-
35
-
162
10.10
.
35.163
10
-
10
-
35
-
163
10.10
.
35.164
10
-
10
-
35
-
164
部署(AIChat、Nginx、dockaer swarm、GlusterFs)
2.安装AIChat
(1) 解压安装包
代码块 | ||||
---|---|---|---|---|
| ||||
cd /<安装包路径>
tar -xvf nla-setup.tar.gz |
(2) 执行安装脚本进行安装
先在安装包的解压目录下对文件进行授权:
代码块 | ||||
---|---|---|---|---|
| ||||
sudo chmod 777 -R * |
创建AIChat安装目录(以下以/data/admin/smartbi-nla为例)
代码块 | ||||
---|---|---|---|---|
| ||||
mkdir /data/admin/smartbi-nla |
进入安装包解压目录
代码块 | ||||
---|---|---|---|---|
| ||||
cd /<安装包解压目录> |
使用install.sh脚本进行安装:
代码块 | ||||
---|---|---|---|---|
| ||||
sudo bash install.sh |
输入创建的AIChat安装目录的绝对路径:
当出现如下字样则说明安装完成:
在各个AIChat集群节点上安装完AIChat服务后执行sudo bash stop.sh停止服务;
(3)修改docker本地存储地址(可选择)
原因:通常docker安装后,默认的本地存储地址是根目录,根目录通常都不大,需要将仓库迁移到容量较大的目录
方法:
...
1、停止AIChat和docker
cd /data/admin/smartbi-nla #停止AIChat
./stop.sh
systemctl stop docker #停止docker
2、创建存储目录(假设你的存储目录是:/data/docker-data)
mkdir /data/docker-data
3、在 /etc/docker目录下创建daemon.json文件;如果存在该文件则修改:
cd /etc/docker
vim /etc/docker/daemon.json
4、daemon.json文件的内容如下(填写创建的存储目录地址)
{
"data-root": "/data/docker-data"
}
5、重启docker
systemctl restart docker
(4)更改了docker本地存储地址后需要重新安装
进入AIChat安装目录
代码块 | ||||
---|---|---|---|---|
| ||||
cd /<AIChat安装目录> |
删除AIChat目录下文件
代码块 | ||||
---|---|---|---|---|
| ||||
rm -rf * |
进入安装包解压目录
代码块 | ||||
---|---|---|---|---|
| ||||
cd /<安装包解压目录> |
使用install.sh脚本进行安装:
代码块 | ||||
---|---|---|---|---|
| ||||
sudo bash install.sh |
输入创建的AIChat安装目录的绝对路径:
当出现如下字样则说明安装完成:
在各个AIChat集群节点上安装完AIChat服务后执行sudo bash stop.sh停止服务;
3.安装dockaer swarm
3.1 查看已经安装docker环境
# docker version
3.2 创建Swarm集群并且添加节点
1、Leader主机上初始化swarm。执行 docker swarm init 命令的节点自动成为管理节点
# 注:如果主机有多个网卡,拥有多个IP,必须使用 --advertise-addr 指定 IP。
# 示例:
docker swarm init --advertise-addr 10.10.35.162
# 执行命令后会给出加入这个swarm的命令
...
Swarm initialized: current node (4a8mo8cekpe0vpk0ze963avw9) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-4lzr2216s61ecbyayyqynjwybmxy5y5th5ru8aal2a0d1t2vn3-ekdgf4swlz8fiq4nnzgnbhr5u 10.10.35.162:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
2、在node主机上执行命令加入swarm
添加work:
...
添加manager:
docker swarm join-token manager
3.3 查看集群信息
# docker info
# docker node ls
3.4 关闭docker swarm集群
#docker node ls 找到leader节点并在leader节点上执行:
docker swarm leave
#移除所有leader节点后
docker swarm leave --force
...
4.1 安装GlusterFs
4.1.1 在所有节点上安装GlusterFS
sudo yum install -y glusterfs-server
4.1.2 在所有节点上启动并使GlusterFS服务
sudo systemctl start glusterd
sudo systemctl enable glusterd
4.1.3 在所有节点上配置防火墙允许GlusterFS通信
sudo firewall-cmd --permanent --add-service=glusterfs
sudo firewall-cmd --reload
4.1.4 在每个节点上,将其它节点的IP地址添加到信任池中:
sudo gluster peer probe <其它节点的IP地址>
4.1.5 查看集群状态
sudo gluster peer status
4.1.6 在任意node上创建复制卷(卷名:gfs-volume)
例如,创建一个名为gfs-volume的复制卷,副本数为3:
...
force
4.1.7 启动卷
sudo gluster volume start gfs-volume
4.1.8 在每个节点上将卷挂载成同样的目录(挂载路径:glusterfs)
sudo mount -t glusterfs <节点IP>:<卷名> /data/glusterfs
4.1.9 检查卷状态
sudo gluster volume info gfs-volume
注意:替换上述脚本中的 node1, node2, node3为你自己环境中的实际节点名或者IP;替换/data/gfs (物理存储路径)为磁盘空间充足的文件路径
4.2 GlusterFs集群同步验证
4.2.1. 测试同步
在任一节点上在/data/glusterfs目录下创建、写入或修改文件,可以在另一节点上看到这些更改
4.2.2. 容错测试
停止2个节点的GlusterFS服务:
#sudo systemctl stop glusterd
...
在停止了GlusterFS服务的2节点中仍然能保持数据同步
4.3 GlusterFs共享配置
复制NLA目录到共享存储(具体以实际安装目录)
cp -r /data/admin/smartbi-nla/config/ /data/glusterfs/admin/smartbi-nla/config cp -r /data/admin/smartbi-nla/scripts /data/glusterfs/admin/smartbi-nla/scripts cp -r /data/admin/smartbi-nla/data /data/glusterfs/admin/smartbi-nla/data cp -r /data/admin/smartbi-nla/services /data/glusterfs/admin/smartbi-nla/services sudo chmod 777 -R /data/glusterfs |
4.4 GlusterFs命令
4.4.1. 查看GlusterFS卷
gluster volume list
4.4.2. 查看所有卷的信息
gluster volume info
4.4.3. 查看所有卷的状态
gluster volume status
4.4.4. 停止一个卷
gluster volume stop dis-stripe
4.5 配置相关信息
4.5.1 修改docker-compose.yml配置文件
cd /data/admin/smartbi-nla/services vim docker-compose.yml |
---|
可参考以下配置文件来修改,具体修改为glusterfs共享目录的路径
4.6. 启动AIChat集群
在Leader节点上启动AIChat集群
启动集群:
...
docker stack rm smartbi-nla
4.7 部署Nginx
参考Nginx官方文档 http://nginx.org/en/docs/ 使用源码或者YUM方式部署Nginx。
4.7.1 使用yum方式安装Nginx
# yum install -y nginx |
通过如下命令,启动、重启与关闭nginx
...
# vi /etc/log/nginx/access.log #访问日志 # vi /etc/log/nginx/error.log #错误日志 |
4.7.1 Nginx 配置
在 /etc/nginx 路径下修改nginx.conf配置文件,可参考以下配置文件
...