openstack-2环境准备
硬件要求
控制器
控制器节点运行身份服务,映像服务,计算的管理部分,网络的管理部分,各种网络代理和仪表板。它还包括支持服务,如SQL数据库,消息队列和NTP。
可选地,控制器节点运行块存储,对象存储,编排和遥测服务的部分。
计算节点上需要至少两块网卡。计算
计算节点运行操作实例的:term:hypervisor
计算部分。默认情况下使用:term:KVM <基于内核的VM(KVM)>
作为hypervisor。计算节点同样运行网络服务代理,用来连接实例到虚拟网络,通过:term:security groups <security group>
为实例提供防火墙服务.instances via。
你可以部署超过一个计算节点。每个结算节点至少需要两块网卡。设备块存储
可选的块存储节点上包含了磁盘,块存储服务和共享文件系统会向实例提供这些磁盘。
为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。
你可以部署超过一个块存储节点。每个块存储节点要求至少一块网卡。存储对象
可选的对象存储节点包含了磁盘。对象存储服务用这些磁盘来存储账号,容器和对象。
为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。
这个服务要求两个节点。每个节点要求最少一块网卡。你可以部署超过两个对象存储节点。网络
网络选项1:者提供网络
提供商网络选项以最简单的方式部署OpenStack Networking服务,主要是第2层(桥接/交换)服务和网络的VLAN分段。从本质上讲,它将虚拟网络桥接到物理网络,并依赖于物理网络基础设施来实现第3层(路由)服务。此外,DHCP服务还为实例提供IP地址信息。网络选项2:服务自网络
自助服务网络选项通过第3层(路由)服务增强了提供商网络选项,这些服务使用覆盖分段方法(如VXLAN)实现 自助服务网络。从本质上讲,它使用NAT将虚拟网络路由到物理网络。此外,此选项为LBaaS和FWaaS等高级服务奠定了基础。
最小需求支持概念验证环境
控制节点:1处理器,4 GB内存,及5 GB存储
计算节点:1处理器,2 GB内存,及10 GB存储
安全
OpenStack服务支持各种安全方法,包括密码,策略和加密。此外,支持服务(包括数据库服务器和消息代理)支持密码安全性。
为简化安装过程,本指南仅适用于密码安全性。您可以手动创建安全密码,但服务配置文件中的数据库连接字符串不能接受“@”之类的特殊字符。我们建议您使用pwgen等工具生成它们 ,或者运行以下命令
openssl rand -hex 10
主机网络
控制节点服务器
配置网络接口
第一个接口配置为管理网络接口
cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.10.253
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes
配置第二块网卡作为提供者网络
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
配置名称解析
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object
计算节点
配置网络接口
第一个接口配置为管理网络接口
cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.10.253
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes
配置第二块网卡作为提供者网络
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
配置名称解析
# node
192.168.10.254 node
# controller
192.168.10.201 controller
# compute1
192.168.10.203 compute1
块存储节点(可选)
配置网络接口
第一个接口配置为管理网络接口
cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.10.253
PREFIX=24
NAME=eth0
DEVICE=eth0
ONBOOT=yes
配置第二块网卡作为提供者网络
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
配置名称解析
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object
验证连通性
我们建议您在继续进行之前,验证到 Internet 和各个节点之间的连通性
网络时间协议(NTP)
方法一 ntp
[root@node ~]# grep ^[a-z] /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default nomodify
restrict 127.0.0.1
restrict ::1
restrict 192.168.10.0 mask 255.255.255.0 nomodify
server ntp.aliyun.com
server 127.127.1.0 iburst local clock
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
disable monitor
systemctl enable ntpd
systemctl start ntpd
方法二 chrony
[root@node ~]# grep ^[a-Z] /etc/chrony.conf
server ntp.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.10.0/24
logdir /var/log/chrony
systemctl enable chronyd.service
systemctl start chronyd.service
控制节点服务器
ntp
crontab -l
* */2 * * * /usr/sbin/ntpdate node && hwclock -w
chrony
grep ^[a-Z] /etc/chrony.conf
server node iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
systemctl enable chronyd.service
systemctl start chronyd.service
其它节点服务器和控制节点服务一样
验证操作
[root@node ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 377 5 +1030us[+2109us] +/- 25ms
[root@control1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* node 3 6 363 21 -952us[-6526us] +/- 27ms
OpenStack的包
启用OpenStack库
[root@control1 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
yum install centos-release-openstack-ocata
yum install https://rdoproject.org/repos/rdo-release.rpm
[root@control1 ~]# ll /etc/yum.repos.d/
total 48
-rw-r--r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo
-rw-r--r-- 1 root root 1056 Sep 6 2016 CentOS-Ceph-Jewel.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo
-rw-r--r-- 1 root root 1170 Jun 23 2017 CentOS-OpenStack-ocata.repo
-rw-r--r-- 1 root root 612 Feb 1 2019 CentOS-QEMU-EV.repo
-rw-r--r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
-rw-r--r-- 1 root root 353 Jul 31 2018 CentOS-Storage-common.repo
-rw-r--r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo
完成安装
安装 OpenStack 客户端
yum install python-openstackclient
RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理:
yum install openstack-selinux
SQL数据库
安全并配置组件
在的[mysqld]中,设置“绑定地址”值为控制节点的管理网络IP地址以是的其他节点可以通过管理网络访问访问数据库设置其他关键字来设置一些有用的选项和UTF-8编码
yum install mariadb mariadb-server python2-PyMySQL
/etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.10.254
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
完成安装
启动数据库服务,并将其配置为开机自启
systemctl enable mariadb.service
systemctl start mariadb.service
通过运行mysql_secure_installation 脚本来保护数据库服务。特别是,为数据库root帐户选择合适的密码
mysql_secure_installation
消息队列
安装包
yum install rabbitmq-server
启动消息队列服务并将其配置为随系统启动
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加 openstack 用户
[root@node ~]# rabbitmqctl add_user openstack openstackpass
Creating user "openstack" ...
给openstack
用户配置写和读权限
[root@node ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
打开 rabbitMQ 的 web 插件
rabbitmq-plugins enable rabbitmq_management
查看插件
rabbitmq-plugins list
访问 rabbitMQ 的 web 界面
默认用户名密码都是 guest,可以更改,web 访问端口为 15672
ss -tnl|grep 15672
web界面
Memcached
安装软件包
yum install memcached python-memcached
配置服务以使用控制器节点的管理IP地址
[root@node ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 192.168.10.254"
启动Memcached服务,并且配置它随机启动
systemctl start memcached
systemctl enable memcached
ss -tnl|grep 11211
keepalived+haproxy
[root@keepalivedhaproxy1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.233/24 dev eth0 label eth0:0
}
}
[root@keepalivedhaproxy1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_iptables
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.233/24 dev eth0 label eth0:0
}
}
[root@keepalivedhaproxy1 ~]# cat /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /s
listen mysql-3306
bind 192.168.10.233:3306
mode tcp
server 192.168.10.254 192.168.10.254:3306 check inter 2000 fall 3 rise 5
listen rabbit-5672
bind 192.168.10.233:5672
mode tcp
server 192.168.10.254 192.168.10.254:5672 check inter 2000 fall 3 rise 5
listen rabbit-15672
bind 192.168.10.233:5672
mode tcp
server 192.168.10.254 192.168.10.254:15672 check inter 2000 fall 3 rise 5
listen memcached-11211
bind 192.168.10.233:11211
mode tcp
server 192.168.10.254 192.168.10.254:11211 check inter 2000 fall 3 rise 5
listen keystone-5000
bind 192.168.10.233:5000
mode tcp
server 192.168.10.201 192.168.10.201:5000 check inter 2000 fall 3 rise 5
listen keystone-35357
bind 192.168.10.233:35357
mode tcp
server 192.168.10.201 192.168.10.201:35357 check inter 2000 fall 3 rise 5
listen glance-9292
bind 192.168.10.233:9292
mode tcp
server 192.168.10.201 192.168.10.201:9292 check inter 2000 fall 3 rise 5
listen glance-9191
bind 192.168.10.233:9191
mode tcp
server 192.168.10.201 192.168.10.201:9191 check inter 2000 fall 3 rise 5
listen nova-8774
bind 192.168.10.233:8774
mode tcp
server 192.168.10.201 192.168.10.201:8774 check inter 2000 fall 3 rise 5
listen nova-8778
bind 192.168.10.233:8778
mode tcp
server 192.168.10.201 192.168.10.201:8778 check inter 2000 fall 3 rise 5
listen neutron-9696
bind 192.168.10.233:9696
mode tcp
server 192.168.10.201 192.168.10.201:9696 check inter 2000 fall 3 rise 5
listen dashborad-80
bind 192.168.10.233:80
mode tcp
server 192.168.10.201 192.168.10.201:80 check inter 2000 fall 3 rise 5
listen vnc-6080
bind 192.168.10.233:6080
mode tcp
server 192.168.10.201 192.168.10.201:6080 check inter 2000 fall 3 rise 5
listen cinder-8776
bind 192.168.10.233:8776
mode tcp
server 192.168.10.201 192.168.10.201:8776 check inter 2000 fall 3 rise 5