一般集群所需要的到底是什么环境?,需要明白的一件事,集群是由一个个单例服务通过各个单例服务之间的socket通信,从而规避一些性能瓶颈,达到1+1大于2的效果。
常见的集群有:weblogic集群,redis集群,MySQL集群,Oracle数据库集群,tomcat集群,大数据Hadoop集群,mongdb集群,elk集群,efk集群perconapercona-xtradb-cluster ,citus,k8s集群等等。
集群的环境搭建方法是和集群的自身特点相适应的,总结起来,一般的集群环境需要如下:
(1)集群搭建前的硬件条件自检在搭建集群前,请先考虑清楚,你现有的服务器磁盘剩余使用空间,内存,CPU这些是否符合集群能够运行的条件,是否能够流畅运行这些集群软件。
比如,你想安装一个Hadoop集群,那么,剩余的磁盘空间是否可以支撑你的部署呢?如果你的var目录是比较小的,那么,安装部署的时候如何将集群部署到磁盘空间剩余较多的分区内呢?
总结起来就是说,根据自己的硬件条件选择安装哪些组件,然后在安装部署的时候调整安装路径,避开比如上面说的比较小的var分区,集群安装前需要有一个大致的部署计划。
(2) 时间服务器得不一致将会导致数据的不一致问题。比如,k8s集群对时间得一致性就要求非常高(题外话,k8s里的etcd组件是有时间一致性的高需求)。时间服务器对于集群来说是非常重要的环境,因为集群的各个节点都是需要节点间通信的,而时间
时间服务器的搭建指南请参见本人的另一个博客:
Linux ntp时间服务器的搭建和配置_zsk_john的博客-CSDN博客_linux配置ntp时间服务器
(3)防火墙的关闭
关闭命令为:
systemctl disable firewalld && systemctl stop firewalld
集群本身就比较复杂,有的集群会使用非常多的组件,比如,大数据hadoop集群,此时,如果防火墙开启,不管是部署阶段还是部署完成后的运维阶段都可能会是一个灾难性的工作量(非常多的防火墙规则需要书写,这很明显是大大增加工作量,而且,不一定能都正确),对于集群的稳定运行是一个非常大的挑战,因此,不管是在测试服务器还是在生产服务器,防火墙一般都是要求关闭的。
(4)selinux 安全系统的关闭
selinux系统关闭的原因和防火墙关闭的原因是一样的,在此就不赘述了。关闭命令为:
临时关闭selinux:setenforce 0
永久关闭selinux:编辑 /etc/selinux/config 这个文件,此文件内有说明,照抄,修改SELINUX的值为disable即可。当然,有sed命令可以修改,但不建议这样修改此链接文件,会有其它的问题产生。
# enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled
(5)组成集群的机器之间的ssh免密配置
ssh免密配置有两个作用,第一,是方便集群部署的时候传递文件,第二,集群内部有时候需要通过ssh免密登录切换节点,转换角色。
(6)组成集群的机器主机名和域名统一配置并写入每个机器的hosts文件内。
当然,如果有自己搭建dns服务器,这一步可以省略,只需要在dns服务器上写好主机名和对应的域名就可以了。
那么,主机名和域名统一是由于集群内通信一般是不使用ip地址的,而是通过主机名和域名来区分集群的角色。比如,大数据集群的hosts通常写成这样:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.0.16 master hdp1.com 192.168.0.17 slave1 hdp2.com 192.168.0.18 slave2 hdp3.com
(7)开发语言环境
比如,大数据集群是需要java环境也就是jdk的,Python环境是自带的,这个就不说了。
(8)gcc和gcc-c++ 以及一些其它的开发组件
gcc环境其实也就是c语言环境,但由于这个比jdk还要普遍就放这里了,当然还有一些开发组件,比如 openssl-devel ,pcre-devel ,zip-devel,curl-devel 等等各种各样的开发组件,不过,每种集群所需并不同,但必定是有gcc环境和openssl-devel,pcre-devel,zlib-devle 这几个非常常用的开发组件。
集群搭建前的环境准备基本也就是以上这几点,当然,还有swap的关闭,这些小问题就不在这赘述了。