Greenplum部署-2. Greenplum 基础环境及系统配置 作者: sysit 分类: d 发表于 2018-12-26 165人围观 ## 2.1 基础环境 ### 2.1.1 操作系统 * CentOS 7.5 ### 2.1.2 软件版本 * greenplum 6.0-alpha ### 2.1.3 hosts ``` 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #master 192.168.112.51 gpdb1 gpdb1.sysit.cn #standby master 192.168.112.52 gpdb2 gpdb2.sysit.cn #segment 192.168.112.53 gpdb3 gpdb3.sysit.cn 192.168.112.54 gpdb4 gpdb4.sysit.cn 192.168.112.55 gpdb5 gpdb5.sysit.cn ``` ### 2.1.4 SELinux和firewalld ``` # 禁用SELinux sed -i "s/SELINUX=enforce/SELINUX=disabled/g" /etc/selinux/config # 禁用防火墙 systemctl stop firewalld.service systemctl disable firewalld.service ``` ## 2.1.5 时间同步 * 见本站其他NTP或chrony配置。 ## 2.2 系统参数 ### 2.2.1 sysctl.conf ``` kernel.shmmax = 500000000 kernel.shmmni = 4096 kernel.shmall = 4000000000 kernel.sem = 500 1024000 200 4096 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 1 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.conf.all.arp_filter = 1 net.ipv4.ip_local_port_range = 10000 65535 net.core.netdev_max_backlog = 10000 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 vm.overcommit_memory = 2 vm.overcommit_ratio = 95 vm.swappiness = 10 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 vm.dirty_background_ratio = 0 vm.dirty_ratio=0 vm.dirty_background_bytes = 1610612736 vm.dirty_bytes = 4294967296 ``` > * 设置vm.overcommit_memory = 2时,如果基于资源队列的资源管理则需要为vm.overcommit_ratio设置一个值,通常为95,即95%;如果基于资源组的资源管理则vm.overcommit_ratio保持默认值(50,即50%)即可。 * 设置net.ipv4.ip_local_port_range = 10000 65535,为了避免端口冲突,则Greenplum的端口不能用这个范围内的端口。可以使用 > ``` PORT_BASE = 6000 MIRROR_PORT_BASE = 7000 REPLICATION_PORT_BASE = 8000 MIRROR_REPLICATION_PORT_BASE = 9000 > ``` ### 2.2.2 limits.conf ``` * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 ``` ### 2.2.3 磁盘参数设置 * XFS是首选文件系统,磁盘挂载用UUID挂载。挂载参数如下: ``` #fstab UUID=xxxx /data xfs nodev,noatime,nobarrier,inode64,allocsize=16m 0 0 ``` * 设置文件预读read-ahead > Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。 ``` # 设置磁盘预读 /sbin/blockdev --setra 16384 /dev/sdb # 查看参数 /sbin/blockdev --getra /dev/sdb # 写入rc.local,否则重启失效 echo '/sbin/blockdev --setra 16384 /dev/sdb' >> /etc/rc.local chmod +x /etc/rc.local ``` * deadline 磁盘IO调度 > 磁盘I/O调度有4种算法: > * CFQ(完全公平排队I/O调度程序)是默认的I/O算法,均匀地分布对I/O的访问,避免进程被饿死并实现较低的延迟,是一种以进程为出发点考虑的比较通用的调度算法,保证大家尽量公平。 * NOOP(电梯式调度程序) 对所有的I/O请求都用FIFO队列形式处理,默认认为I/O不会存在性能问题。对闪存设备、RAM、嵌入式系统是最好的。 * Deadline(截止时间调度程序),确保在一个截止时间内的服务请求,对数据库环境是最好的选择,是一种提高机械硬盘吞吐量为思考出发点的调度算法。 * AS(预料I/O调度程序)适合写入角度的环境,比如文件服务器。 > 对固态硬盘来说,IO调度算法越复杂,额外要处理的逻辑越多,效率就越低。使用NOOP是最好的,Deadline次之,而CFQ效率最低。 ``` #查看当前系统的I/O调度方法: cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] # 临地更改I/O调度方法: # 例如:想更改到noop电梯调度算法: echo noop > /sys/block/sda/queue/scheduler # 永久更改 # 如果操作系统使用grub2,比如RHEL7.X或者CentOS7.x,使用grubby工具修改 grubby --update-kernel=ALL --args="elevator=deadline" # 查看更改 grubby --info=ALL # 如果使用的grub,比如RHEL6.x 或者CentOS 6.x,在grub.conf中添加elevator=deadline vi /boot/grub/grub.conf kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=LABEL=/ elevator=deadline crashkernel=128M@16M quiet console=tty1 console=ttyS1,115200 panic=30 initrd /initrd-2.6.18-274.3.1.el5.img ``` ### 2.2.4 transparent_hugepage > Transparent Huge Pages (THP)是一种Linux内存管理机制,减少了Translation Lookaside Buffer (TLB)使用larger memory pages时的寻址开销。 但是数据库系统通常在使用THP的时候性能低下,因为它们倾向于稀疏而非连续的内存访问模式。你应该再Linux主机上禁用THP以确保MongoDB具备最佳性能。 ``` # 查看 cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never # 永久更改 # 如果操作系统使用grub2,比如RHEL7.X或者CentOS7.x,使用grubby工具修改 grubby --update-kernel=ALL --args="transparent_hugepage=never" # 查看更改 grubby --info=ALL # 如果使用的grub,比如RHEL6.x 或者CentOS 6.x,在grub.conf中添加transparent_hugepage=never kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=LABEL=/ elevator=deadline crashkernel=128M@16M quiet console=tty1 console=ttyS1,115200 panic=30 transparent_hugepage=never initrd /initrd-2.6.18-274.3.1.el5.img ``` ### 2.2.5 IPC object removal > 在centos7.x中,systemd-logind 服务引入了一个新特性,该新特性是:当一个user 完全退出os之后,remove掉所有的IPC objects。 该特性由/etc/systemd/logind.conf参数文件中RemoveIPC选项来控制。 ``` #修改/etc/systemd/logind.conf #RemoveIPC=no sed -i "s/#RemoveIPC/RemoveIPC/" /etc/systemd/logind.conf systemctl restart systemd-logind ``` ### 2.2.6 修改sshd的MaxStartups > MaxStartups 10:30:100 MaxStartups由三个值组成:start:rate:full,在CentOS系统中,其默认值为10:30:100,意思为当未完成认证的连接数超过10时,新发起的连接将以30%的概率被拒绝,当未完成认证的连接数超过100时,则新连接全部被拒绝。 攻击者可以利用此设置进行DDoS攻击,攻击者并发连接远程服务器,并且不输入密码,当未完成的连接数大于full时,则正常请求也被拒绝。 ``` #修改/etc/ssh/sshd_config #MaxStartups 200 sed -i "/MaxStartups/aMaxStartups 200" /etc/ssh/sshd_config systemctl restart sshd ``` 如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作! 赞赏支持