多实例安装部署
1、检查服务器环境
修改主机名,设置完断开终端重新连接
hostnamectl set-hostname gbase1
查看磁盘分区和格式,如果磁盘没有挂载需要挂载
df -Th
检查防火墙
systemctl status firewalld.service
没有安全要求,关闭防火墙
systemctl stop firewalld.service
没有安全要求,关闭开机自启动防火墙
systemctl disable firewalld.service
如果有安全要求,开放防火墙端口
firewall-cmd --permanent --add-port=21/tcp;
firewall-cmd --permanent --add-port=22/tcp;
firewall-cmd --permanent --add-port=5050/tcp;
firewall-cmd --permanent --add-port=5258/tcp;
firewall-cmd --permanent --add-port=5288/tcp;
firewall-cmd --permanent --add-port=5493/udp;
firewall-cmd --permanent --add-port=5678/tcp;
firewall-cmd --permanent --add-port=5918/tcp;
firewall-cmd --permanent --add-port=5918/udp;
firewall-cmd --permanent --add-port=5919/tcp;
firewall-cmd --permanent --add-port=5919/udp;
firewall-cmd --permanent --add-port=6066-6166/tcp;
firewall-cmd --permanent --add-port=6268/tcp;
firewall-cmd --permanent --add-port=6957/tcp;
firewall-cmd --permanent --add-port=8088/tcp;
关闭selinux
vim /etc/sysconfig/selinux
enforcing改为disabled
查看cpu核数
lscpu
查看内存
free -h
查看muna个数(多少列)
numactl -H
内存大于256G,CPU 逻辑核数大于32一般可以考虑多实例部署,服务器一般部署两个或四个实例,每个实例可使用的内存不低于32GB。
256G内存,40核部署两实例;512G内存,56核部署四实例。
在4个NUMA节点的服务器上,每个NUMA对应一个实例;在8个或更多NUMA节点的服务器上,2个或多个NUMA节点对应一个实例。
查看当前CPU的全部主频信息,看频率范围和当前频率以及是否支持性能模式
cpupower -c all frequency-info
设置当前CPU为性能模式
cpupower -c all frequency-set -g performance
设置当前CPU为节能模式
cpupower -c all frequency-set -g powersave
查看当前CPU模式,一般调为性能模式(performance)
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2、安装多实例
查看当前ip所在的网卡名字,一般为ens33,bond0等
ifconfig
增加虚拟ip,根据已有的IP进行修改,网关在什么网段,广播范围选什么,第一行是添加虚拟IP,第二行是把这个过程添加到启动项,更方便一点。
#增加物理IP也行,添加配置文件然后service network restart
ifconfig bond0:0 10.10.3.123 netmask 255.255.0.0 broadcast 10.10.255.255 up
echo 'ifconfig bond0:0 10.10.3.123 netmask 255.255.0.0 broadcast 10.10.255.255 up' >> /etc/rc.d/rc.local
关闭IP
ifconfig bond0:0 down
3、安装集群
所有节点,添加linux安装用户
useradd gbase
passwd gbase
所有节点,添加安装目录位置,放在增加的盘上
mkdir /opt/gbase
所有节点,给添加位置赋权
chown -R gbase: /opt/gbase
主节点,拷贝集群安装包到安装目录位置,解压,解压之后出现gcinstall目录
tar xjf GBase8a_MPP_Cluster-License-9.5.3.xxx-redhatxx-x86_64.tar.bz2
主节点,进入gcinstall目录后修改demo.options文件,installPrefix为安装位置,coordinateHost为管理节点IP,dataHost为数据节点IP,gcwareHost与coordinateHost保持一致
installPrefix= /opt/gbase
coordinateHost = 172.16.3.230,172.16.3.231,172.16.3.232
coordinateHostNodeID = 230,231,232
dataHost = 172.16.3.230,172.16.3.231,172.16.3.232
#existCoordinateHost =
#existDataHost =
#existGcwareHost=
gcwareHost = 172.16.3.230,172.16.3.231,172.16.3.232
gcwareHostNodeID = 230,231,232
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbasepoc123'
rootPwd = ''
#dbRootPwd = ''
#rootPwdFile = rootPwd.json
#characterSet = utf8
#sshPort = 22
使用 root 用户将主节点 gcinstall 目录下的 SetSysEnv.py 文件拷贝到集群所有节点服务器上。所有节点执行该文件。--cgroup为使用资源管理,--installPrefix为安装位置
scp /opt/gbase/gcinstall/SetSysEnv.py root@192.168.159.132:/opt/gbase
python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
主节点使用root用户在/root目录下,一路enter过去
ssh-keygen
主节点用gbase用户回到gcinstall下,获取ESN码,拷贝ESN码申请邮件,获取license
./getesn.py --silent=demo.options
主节点在gcinstall下用gbase用户安装
./gcinstall.py --silent=demo.options --license_file=gbase.lic
主节点在gcinstall下用gbase用户分片
gcadmin distribution gcChangeInfo.xml p 1 d 1
初始化
gccli
initnodedatamap;
4、numa绑定
#先一个节点进行操作,后续会进行拷贝同步
查看具体是哪个gcluster起到作用
which gcluster_services
拷贝刚才查的gcluster_services,留个备份
cp /opt/gbaseup/10.10.3.235/gnode/server/bin/gcluster_services /opt/gbaseup/10.10.3.235/gnode/server/bin/gcluster_services_bak
修改该文件
vim /opt/gbaseup/10.10.3.235/gnode/server/bin/gcluster_services
1个numa节点对应一个实例样例如下:
找到: $2 > /dev/null 2>&1 & # waiting for start completely 注释掉第一行后添加代码: #$2 > /dev/null 2>&1 & if [ $1 = 'gbase' ];then count_numa=$(($(($3))%2)) echo "--cpunodebind=+$count_numa --membind=+$count_numa" numactl --cpunodebind=+"${count_numa}" --membind=+"${count_numa}" $2 > /dev/null 2>&1 & sleep 10 else $2 > /dev/null 2>&1 & fi # waiting for start completely 找到: # start data service if [ $node_type == 2 -o $node_type == 3 ]; then for ((count=0; count<${#DataServerName[@]}; count++)) do for inst in `echo $GBASE_INSTANCES|sed 's/:/\n/g'|sort|uniq` do if [ $inst != "" ];then #echo $inst . $inst declare -a DataServerBin DataServerBin[0]=$GBASE_HOME/bin/gbased DataServerBin[1]=$GBASE_HOME/bin/gc_sync_server #echo ${DataServerBin[count]} __start ${DataServerName[count]} ${DataServerBin[count]} if [ "$?" != "$RET_SUCCESS" ]; then ret_start=$RET_START_ALL_ERROR fi fi done done fi 修改为:(需要添加或修改带*的行) # start data service if [ $node_type == 2 -o $node_type == 3 ]; then for ((count=0; count<${#DataServerName[@]}; count++)) do * instance_no=0 for inst in `echo $GBASE_INSTANCES|sed 's/:/\n/g'|sort|uniq` do if [ $inst != "" ];then #echo $inst . $inst declare -a DataServerBin DataServerBin[0]=$GBASE_HOME/bin/gbased DataServerBin[1]=$GBASE_HOME/bin/gc_sync_server #echo ${DataServerBin[count]} * __start ${DataServerName[count]} ${DataServerBin[count]} ${instance_no} if [ "$?" != "$RET_SUCCESS" ]; then ret_start=$RET_START_ALL_ERROR fi * ((instance_no++)) fi done done fi 2个numa节点对应一个实例样例 找到: $2 > /dev/null 2>&1 & # waiting for start completely 修改为: #$2 > /dev/null 2>&1 & if [ $1 = 'gbase' ];then count_numa=$(($(($3))%2)) echo "--cpunodebind=+$count_numa,$((${count_numa}+4)) --membind=+$count_numa,$(($count_numa+4))" numactl --cpunodebind=+"${count_numa},$((${count_numa}+4))" --membind=+"${count_numa},$((${count_numa}+4))" $2 > /dev/null 2>&1 & sleep 10 else $2 > /dev/null 2>&1 & fi # waiting for start completely 找到: # start data service if [ $node_type == 2 -o $node_type == 3 ]; then for ((count=0; count<${#DataServerName[@]}; count++)) do for inst in `echo $GBASE_INSTANCES|sed 's/:/\n/g'|sort|uniq` do if [ $inst != "" ];then #echo $inst . $inst declare -a DataServerBin DataServerBin[0]=$GBASE_HOME/bin/gbased DataServerBin[1]=$GBASE_HOME/bin/gc_sync_server #echo ${DataServerBin[count]} __start ${DataServerName[count]} ${DataServerBin[count]} if [ "$?" != "$RET_SUCCESS" ]; then ret_start=$RET_START_ALL_ERROR fi fi done done fi 修改为: # start data service if [ $node_type == 2 -o $node_type == 3 ]; then for ((count=0; count<${#DataServerName[@]}; count++)) do * instance_no=0 for inst in `echo $GBASE_INSTANCES|sed 's/:/\n/g'|sort|uniq` do if [ $inst != "" ];then #echo $inst . $inst declare -a DataServerBin DataServerBin[0]=$GBASE_HOME/bin/gbased DataServerBin[1]=$GBASE_HOME/bin/gc_sync_server #echo ${DataServerBin[count]} * __start ${DataServerName[count]} ${DataServerBin[count]} ${instance_no} if [ "$?" != "$RET_SUCCESS" ]; then ret_start=$RET_START_ALL_ERROR fi * ((instance_no++)) fi done done fi 重启各节点 cexec 'killall -9 gbased gclusterd gcrecover gcmonit gcmmonit ; gcluster_services all stop ; gcware_services all stop' cexec 'gcluster_services all start ; gcware_services all start' 清缓存 cexec 'sync' cexec 'echo 3 > /proc/sys/vm/drop_caches' 启动服务时,可以看到,代表启动成功 [gbase@gbase233 gcinstall]$ gcluster_services all restart Stopping gcrecover : [ OK ] Stopping gcluster : [ OK ] Stopping gbase : [ OK ] Stopping gbase : [ OK ] Stopping syncserver : [ OK ] Stopping syncserver : [ OK ] Starting gbase : --cpunodebind=+0 --membind=+0 [ OK ] Starting gbase : --cpunodebind=+1 --membind=+1 [ OK ] Starting syncserver : [ OK ] Starting syncserver : [ OK ] Starting gcluster : [ OK ] Starting gcrecover : [ OK ] 查看numa绑定状态: numastat `pidof gbased` 重启后发现gcluster未启动成功 查system.log发现报错: file check failed 修改gc层gbase_8a_gcluster.cnf 在[gbased]下添加skip_file_check=1
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526