多实例部署

1.1确定实例个数

建议每个服务器部署不超过4个实例,每个实例可使用的内存不低于64GB。
多实例部署下,推荐的CPU、内存和数据量大小比例关系如下:
1core CPU配备8GB以上内存,管理不超过500GB压缩数据或1TB原始未压缩数据。
对于48core的服务器来说,推荐安装4个实例。每个实例12core CPU,内存为128G,可管理6TB的数据。
对于CPU核数更多的国产CPU,CPU核数与内存比例可以适当降低。

1.2NUMA绑定建议

在NUMA架构的服务器上,需要进行NUMA节点与数据库实例的绑定。如在4个NUMA节点的服务器上,每个NUMA对应一个实例;在8个或更多NUMA节点的服务器上,可以将2个或多个NUMA节点对应一个数据库实例。
data节点不和gcware及gcluster节点部署在一个NUMA节点上,需要为每个实例申请一个IP地址。在混合部署的服务器上,gcware和gcluster绑定1个或2个NUMA节点,使用一个IP1地址;服务器上的其他NUMA节点分别绑定不同的data节点,使用不同的IP地址。在只部署data节点的服务器上,为每个data绑定同等的NUMA个数、配置不同的IP地址。
对于NUMA架构服务器的硬件方面,还有如下建议:

  • 建议内存条均匀的分配到不同的NUMA节点;
  • 建议配备多块网卡,不同的数据库实例使用不同的网卡;
  • 建议根据数据库实例的个数,将磁盘划分为多组,每个实例使用一组独立的磁盘;如物理服务器上有24块磁盘、部署4实例的情况下,建议每个实例部署在一组磁盘raid上,每组磁盘由6块磁盘做raid5;(集群部署完成后,通过mount磁盘到不同实例安装路径的方式)。

1.3集群高可用

多实例部署中,可以将每个物理服务器当做一个机架,在生成distribution时按照机架高可用的方式生成distribution,从而避免同一个分片数据的主备节点都位于同一个物理机上。
编辑gcChangeInfo_vcall.xml文件时要使同一服务器的每个ip的分片都备份到其他服务器上。如果使用pattern 1创建distribution,需要将同一服务器的ip放到一个rack上,使其备分片全部落到相邻rack上,保证备份片和主分片落在不同的服务器上;如果使用pattern 2创建distribution,因为该模式是将备分片放到相邻的IP上,所以需要将不同服务器的IP在gcChangeInfo_vcall.xml中相邻排放。

GBase 8a MPP Cluster 多实例最佳实践(中)_8a

生成的数据分布可以确保主备分片位于两个不同的物理机上。

GBase 8a MPP Cluster 多实例最佳实践(中)_IP_02

1.4系统参数优化

集群安装前通过SetSysEnv.py脚本进行操作系统参数的配置优化。这里需要特别注意的是网络有关参数,因多实例会造成服务器上承载更多的网络资源开销,在高并发场景下,就可能操作端口资源不够、连接数限制达到上限等问题。
ssh连接数上限可适当增加,配置如下:
vi /etc/ssh/sshd_config
输入/MaxStartups 定位到如下并修改

1)#MaxStartups 10,#去掉,修改10为1000,MaxStartups 1000
注:如果是centos7,语法格式为:MaxStartups 10:30:100
表示从第10个开始,以30%的概率后续新的ssh登录,直到100个连接

2) 重启SSH服务,/etc/rc.d/init.d/sshd restart
查看某端口连接数
netstat -nat|grep -i '22' |wc -l

1.5集群参数优化

集群节点的资源是根据物理机分配的,没有参考实例数分配,采用多实例部署时,应对内存参数、并行度参数需进行手工的配置。避免位于同一个服务器上的不同节点间产生严重的资源争抢。
如服务器内存为256GB,按照4个numa节点分配4个data节点的三个内存堆大小,分别为:
gbase_heap_data=24 
#(256*6/16)/4
gbase_heap_temp=4G
#(256*1/16)/4
gbase_heap_large=12G
#(256*3/16)/4
如服务器的CPU共128核心,每个NUMA节点有32核,如果业务并发为10~20个,则建议配置gbase_parallel_degree、gbase_loader_parallel_degree为3。
方法:
各gnode节点的配置文件/opt/IP/gnode/config/gbase_8a_gbase.cnf中查找以下参数,如果存在修改参数值如下,如果不存在,将以下参数添加进配置文件中。
gbase_heap_data=24G
gbase_heap_temp=4G
gbase_heap_large=12G
gbase_parallel_degree=3
gbase_loader_parallel_degree=3
调整内存配置后,需要重启gbased的服务使配置生效。

1.6国产服务器配置优化

1.6.1网络配置优化

海光、鲲鹏CPU硬件部署结构示例如下:

GBase 8a MPP Cluster 多实例最佳实践(中)_服务器_03

因为海光、鲲鹏CPU带有网卡插槽,为了避免网络数据包过多时造成CPU0的中断频繁、sys高以及跨CPU调度,多实例下的网络配置建议如下:
1.每个CPU网卡插槽配置一个网卡,网卡均不做绑定;
2.根据需要的IP数量,将IP地址平均分布在两个网卡上,并设置IP以及网卡队列和中断绑定;
3.多实例下gbase节点做numa绑定时,绑定到IP所属的CPU numa节点上。如 gbaseNode1是IP1,则gbaseNode1绑定numa节点时可绑到CPU-0的numa节点上,不要绑到CPU-1的numa节点上。

以上海光的网络优化配置中部分操作命令参考如下示例:
(参考命令基于Hygon处理器的中科可控H620-G30服务器和Kunpeng处理器的泰山200服务器TaiShan2280)
1.取消反向路由
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 
echo 0 > /proc/sys/net/ipv4/conf/enp33s0f1/rp_filter 
echo 0 > /proc/sys/net/ipv4/conf/enp98s0f1/rp_filter

2.每台机器添加路由
Gbase NODE 1
ip route add 10.100.52.0/24 dev enp33s0f1 proto kernel scope link src 10.100.52.171 table 111
ip route add 10.100.52.0/24 dev enp98s0f1 proto kernel scope link src 10.100.52.184 table 222
ip rule add from 10.100.52.171 table 111
ip rule add from 10.100.52.181 table 111
ip rule add from 10.100.52.182 table 111
ip rule add from 10.100.52.183 table 111
ip rule add from 10.100.52.184 table 222
ip rule add from 10.100.52.185 table 222
ip rule add from 10.100.52.186 table 222
ip rule add from 10.100.52.187 table 222

Gbase NODE 2
ip route add 10.100.52.0/24 dev enp33s0f1 proto kernel scope link src 10.100.52.172 table 111
ip route add 10.100.52.0/24 dev enp98s0f1 proto kernel scope link src 10.100.52.191 table 222
ip rule add from 10.100.52.172 table 111
ip rule add from 10.100.52.188 table 111
ip rule add from 10.100.52.189 table 111
ip rule add from 10.100.52.190 table 111
ip rule add from 10.100.52.191 table 222
ip rule add from 10.100.52.192 table 222
ip rule add from 10.100.52.193 table 222
ip rule add from 10.100.52.194 table 222

Gbase NODE 3
ip route add 10.100.52.0/24 dev enp33s0f1 proto kernel scope link src 10.100.52.173 table 111
ip route add 10.100.52.0/24 dev enp98s0f1 proto kernel scope link src 10.100.52.198 table 222
ip rule add from 10.100.52.173 table 111
ip rule add from 10.100.52.195 table 111
ip rule add from 10.100.52.196 table 111
ip rule add from 10.100.52.197 table 111
ip rule add from 10.100.52.198 table 222
ip rule add from 10.100.52.199 table 222
ip rule add from 10.100.52.200 table 222
ip rule add from 10.100.52.201 table 222

Gbase NODE 4
ip route add 10.100.52.0/24 dev enp33s0f1 proto kernel scope link src 10.100.52.174 table 111
ip route add 10.100.52.0/24 dev enp98s0f1 proto kernel scope link src 10.100.52.205 table 222
ip rule add from 10.100.52.174 table 111
ip rule add from 10.100.52.202 table 111
ip rule add from 10.100.52.203 table 111
ip rule add from 10.100.52.204 table 111
ip rule add from 10.100.52.205 table 222
ip rule add from 10.100.52.206 table 222
ip rule add from 10.100.52.207 table 222
ip rule add from 10.100.52.208 table 222

3.网卡中断绑定优化
ethtool -i enp33s0f1
ethtool -L enp33s0f1 combined 16
ethtool -L enp98s0f1 combined 16
ethtool -G enp33s0f1 rx 4096 tx 4096
ethtool -G enp98s0f1 rx 4096 tx 4096
systemctl stop irqbalance
chmod +x set_irq_affinity 
./set_irq_affinity  24-31,88-95 enp33s0f1
./set_irq_affinity  48-55,112-119 enp98s0f1

1.6.2BIOS配置推荐

使用海光最新量产BIOS,升级版本(OSSSX237 > OSSSX248)。使用最新版本BIOS可解决低版本存在的各类Bug,更利于发挥海光CPU性能。
BIOS配置方法如下:

1.BIOS修改Core Performance Boost到“Enable”模式

(默认Enabled,HYGON CBS->Core Performance Boost)
该选项控制是否使用“睿频”,允许CPU超越基频运行

GBase 8a MPP Cluster 多实例最佳实践(中)_服务器_04

2.BIOS修改Global C-State Control到“AUTO”模式

(默认Disabled,HYGON CBS->Global C-State Control)
控制CPU闲置时的功耗,允许自动进入CPU进入省电模式。

GBase 8a MPP Cluster 多实例最佳实践(中)_多实例_05

3.BIOS修改P-State到“Normal”模式

(默认Normal,Advanced->CPU Configuration->P-State Control)
控制CPU的工作状态,可以通过BIOS中可设置为Normal和Performance。当设置为Normal之后OS可以使用cpupower或tuned-adm工具修改P-State状态。

GBase 8a MPP Cluster 多实例最佳实践(中)_IP_06

4.BIOS修改SMT Mode到“Enabled”模式

(默认Enabled,Chipset->SMT Mode)
开启超线程技术

GBase 8a MPP Cluster 多实例最佳实践(中)_多实例_07

5.BIOS修改SVM Mode到“Disabled”模式

(默认Enable,Advanced-> CPU Configuration->SVM Mode)
控制是否开启硬件虚拟化技术

GBase 8a MPP Cluster 多实例最佳实践(中)_多实例_08

6.BIOS修改SR-IOV Support到“Disabled”模式

(默认Enable,Advanced-> PCI Bus Driver Version->SR-IOV Support)
关闭虚拟化网卡直通模式

GBase 8a MPP Cluster 多实例最佳实践(中)_多实例_09

7.BIOS修改IOMMU到“Disabled”模式

(默认Enable,HYGON CBS-> NBIO Common Options->NB Configuration->IOMMU)
关闭虚拟化内存直通选项

GBase 8a MPP Cluster 多实例最佳实践(中)_服务器_10

1.6.3操作系统配置推荐

下面配置命令主要是以海光服务器为例。

  • 修改电源管理器的配置文件,设置throughput-performance 可以设置P-state为Performance状态。
  • 关闭NetworkManager,避免造成路由冲突。

操作示例:

# tuned-adm profile throughput-performance
# systemctl stop NetworkManager
# systemctl disable NetworkManager    

修改内核参数。示例如下:

vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.enp33s0f0.arp_ignore=1
net.ipv4.conf.enp113s0f0.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.enp33s0f0.arp_announce=2
net.ipv4.conf.enp113s0f0.arp_announce=2

说明:
内核参数arp_ignore为1代表响应目的IP地址为接收网卡上的本地地址的arp请求
内核参数arp_announce为2代表只向该网卡回应与该网段匹配的ARP报文

时间同步。示例如下

ntpdate -d 22.188.116.80
chronyd sources