基于OpenStack+Ceph搭建高可用的私有云(二)

环境准备—-服务器配置建议及系统期初设置

如果要搭建OpenStack+Ceph高可用的超融合模式私有云,最少配置3台服务器且3台服务器都要配置为控制节点,如果用于生产环境,大家根据业务实际需要调整。

下面列出实验环境与生产环境的最低配置建议:

硬件实验环境极简配置生产环境最低配置
CPU4 核 8 线程16 核 32 线程
内存32 GB128 GB
系统盘(第 1 块)120GB 普通 SSD240GB 企业级 SSD
存储盘(第 2 块)1TB SSD3.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:将#替换为@)

发表评论