环境准备—-服务器配置建议及系统期初设置
如果要搭建OpenStack+Ceph高可用的超融合模式私有云,最少配置3台服务器且3台服务器都要配置为控制节点,如果用于生产环境,大家根据业务实际需要调整。
下面列出实验环境与生产环境的最低配置建议:
| 硬件 | 实验环境极简配置 | 生产环境最低配置 |
| CPU | 4 核 8 线程 | 16 核 32 线程 |
| 内存 | 32 GB | 128 GB |
| 系统盘(第 1 块) | 120GB 普通 SSD | 240GB 企业级 SSD |
| 存储盘(第 2 块) | 1TB SSD | 3.84TB 企业级 SSD |
| 网络(网卡) | 2 个千兆网口(1GbE) | 2块4口万兆光卡(4 x 10GbE SFP+) |
相关注意事项:
- CPU需支持虚拟化(现在的CPU基本上都支持),并且需在BIOS中打开硬件虚拟化支持,不然只能使用QEMU纯软件模拟模式来创建虚拟机,无法使用KVM加速。
- 生产环境中网络建议划分为4张网:OpenStack控制网络、计算网络、Ceph控制网络和存储网络,并且配置2张4口网卡,两张网卡之间1对1端口做又网口Bonding。
这里以实验环境为例,安装和配置OpenStack Stein版+Ceph Nautilus(14.2.0)版,操作系统选CentOS 7.9。
一、安装CentOS 7.9操作系统
安装操作系统注意事项:
- 关闭 Swap,在超融合架构中,如果内存吃紧触发 Swap 换页,由于涉及分布式存储的 I/O 等待,会直接导致整个物理节点发生灾难性的性能雪崩(OSD 心跳超时被误判为节点宕机)。
- 不要对存储盘(第2块)分区,在交给 Ceph管理前,必须确保该盘是绝对干净的。如果盘上有残留的分区表、LVM 卷或文件系统,Ceph 初始化会直接报错。
二、安装完操作系统后配置(所有节点的期初配置):
1、关闭SELINUX
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
2、更改主机名
hostnamectl set-hostname master1
3、配置双网卡Bonding
第一步,配置设定文件:
1、新建/etc/sysconfig/network-scripts/ifcfg-bond0文件
touch /etc/sysconfig/network-scripts/ifcfg-bond0
2、编辑/etc/sysconfig/network-scripts/ifcfg-bond0文件
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 #设备名称,可以自己修改
BOOTPROTO=none
ONBOOT=yes
#以下内容根据自己实际情况修改
IPADDR=192.168.0.11 #IP地址
NETMASK=255.255.255.0 #子网掩码
NETWORK=192.168.0.0 #网段
BROADCAST=192.168.0.255 #广播地址
GATEWAY=192.168.0.1 #网关
DNS1=192.168.0.1 #DNS地址1
3、编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件(网卡1的配置文件,配件文件名称根据实际调整)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=20:04:0F:EC:3F:A1
TYPE=Ethernet
UUID=a0bf6d57-5e57-478d-8302-5e8057e4ff1c
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
4、编辑/etc/sysconfig/network-scripts/ifcfg-eth1文件(网卡2的配置文件,配件文件名称根据实际调整)
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=20:04:0F:EC:3F:A1
TYPE=Ethernet
UUID=a0bf6d57-5e57-478d-8302-5e8057e4ff1c
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
第二步,修改modprobe相关设定文件,并加载bonding模块:
1、创建一个加载bonding的专属设定文件/etc/modprobe.d/bonding.conf
touch /etc/modprobe.d/bonding.conf
2、编辑/etc/modprobe.d/bonding.conf文件
vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=6 miimon=200
#mod=0,即:(balance-rr) Round-robin policy(平衡轮循策略)
#mod=1,即: (active-backup) Active-backup policy(主-备份策略)
#mod=2,即:(balance-xor) XOR policy(平衡策略)
#mod=3,即:broadcast(广播策略)
#mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
#mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
#mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
#这里使用mod6,mode6模式下无需配置交换机,另外做bonding的这两块网卡是使用不同的MAC地址。
3、加载模块(重启系统后就不用手动再加载了)
modprobe bonding
4、确认模块是否加载成功
lsmod | grep bonding
显示bonding 100065 0 时即为成功(100065数值可变)
第三步,关闭NetworkManager管理套件
systemctl stop NetworkManager
systemctl disable NetworkManager
第四步,系统启动自动绑定
vi /etc/rc.d/rc.local
#追加
ifenslave bond0 eth0 eth1
第五步,重启服务器或重启一下网络,然后确认一下状况:
1.1、重启服务器,最稳妥:
reboot
1.2、重启网络:
/etc/init.d/network restart
或:
service network restart
2、确认状况:
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
Bonding Mode: Adaptive load balancing
Primary Slave: None
Currently Active Slave: eth0
……
ifconfig | grep HWaddr
bond0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
eth0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
eth1 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
4、配置yum源,将yum源替换为阿里云
备份:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
运行yum clean all && yum makecache生成缓存
5、安装必须的组件
yum -y install chrony wget vim net-tools telnet traceroute
6、配置时间同步
如果有自己的NTP服务器,配置为自己自己的NTP服务器
vi /etc/chrony.conf
server 192.168.0.1 iburst prefer minpoll 5 maxpoll 7
server 192.168.0.2 iburst minpoll 5 maxpoll 7
systemctl enable chronyd
systemctl restart chronyd
/sbin/hwclock -w
7、配置hosts
echo "192.168.0.11 master1" >> /etc/hosts
8、内核参数调整
调整文件描述符限制
vi /etc/sysctl.conf
fs.file-max = 65536
调整系统级限制
/etc/security/limits.conf
* soft core unlimited
* hard core unlimited
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft memlock 32000
* hard memlock 32000
* soft msgqueue 8192000
* hard msgqueue 8192000
* soft nofile 65535
* hard nofile 65535
mysql soft nofile 65535
mysql hard nofile 65535
9、设置密钥登录
获取秘钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa > /dev/null 2>&1
在各个计算节点间对秘钥进行相互拷贝
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.11
验证是否可以免密登录
ssh root@192.168.0.11
确保设置了正确的SELinux环境
restorecon -Rv ~/.ssh
10、替换firewalld为iptables
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
yum -y install iptables-services #安装iptables
systemctl restart iptables #重启iptables
systemctl status iptables.service #查看iptables状态
systemctl enable iptables.service #设置iptables开机自启动
11、设置iptables
vi /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# mariadb
# tcp3306:服务监听端口;
# tcp&udp4567:tcp做数据同步复制,多播复制同时采用tcp与udp;
# tcp4568:增量状态传输;
# tcp4444:其他状态快照传输;
# tcp9200:心跳检测
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4444 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4567:4568 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4567 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT
# rabbitmq
# tcp4369:集群邻居发现;
# tcp5671,5672:用于AMQP 0.9.1 and 1.0 clients使用;
# tcp5673:非rabbitmq默认使用端口,这里用作hapoxy前端监听端口,避免后端服务与haproxy在1个节点时无法启动的问题;如果使用rabbitmq本身的集群机制,则可不设置此端口;
# tcp15672:用于http api与rabbitadmin访问,后者仅限在management plugin开启时;
# tcp25672:用于erlang分布式节点/工具通信
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671:5673 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672:15673 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
# memcached
# tcp11211:服务监听端口;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT
# pcs
# tcp2224:pcs web管理服务监听端口,可通过web新建,查看,删除资源等,端口值在/usr/lib/pcsd/ssl.rb文件中设置;
# udp5405:中间件corosync服务集群多播通信端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2224 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 5404:5405 -j ACCEPT
# haproxy
# tcp1080:haproxy监听端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1080 -j ACCEPT
# dashboard
# tcp80:dashboard监听端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# keystone
# tcp35357:admin-api端口;
# tcp5000:public/internal-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 35357 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT
# glance
# tcp9191:glance-registry端口;
# tcp9292:glance-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9191 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9292 -j ACCEPT
# nova
# tcp8773:nova-ec2-api端口;
# tcp8774:nova-compute-api端口;
# tcp8775:nova-metadata-api端口;
# tcp8778:placement-api端口;
# tcp6080:vncproxy端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8773:8775 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8778 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6080 -j ACCEPT
# cinder
# tcp8776:cinder-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8776 -j ACCEPT
# neutron
# tcp9696:neutron-api端口;
# udp4789:vxlan目的端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9696 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4789 -j ACCEPT
# ceph
# tcp6789:ceph-mon端口;
# tcp6800~7300:ceph-osd端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6800:7300 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
systemctl restart iptables
通过以上操作,完成了系统的期初设置,设置完成后reboot下服务器,让SELINUX配置生效。
下一篇:使用galera组件搭建高可用的MariaDB集群,敬请关注。
本文为原创内容,转载请注明作者+出处+原文链接,禁止商用、禁止修改内容,未经授权不得二次分发,违规必究。
如需联系作者,请联系rancel#stsoo.com(PS:将#替换为@)