參考文檔:
1. 網絡結構
# | network | ip |
---|---|---|
1 | Management network | 10.0.0.0/24 |
2 | Provider network | 192.168.144.0/22 |
2. 網絡配置
節點 | hostname | eno1 | eno2 |
---|---|---|---|
控制節點 | controller | 192.168.144.101/22 | 10.0.0.101/24 |
網絡節點 | network | 192.168.144.102/22 | 10.0.0.102/24 |
計算節點 | compute01 | 192.168.144.103/22 | 10.0.0.103/24 |
3. 操作系統和內核
[root@compute01 compute]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@compute01 compute]# uname -r
3.10.0-327.el7.x86_64
4. 每個節點都要進行的操作
4.1 設置hostname,設置/etc/hosts ,關閉防火墻,關閉selinux
- 設置/etc/hosts
[root@compute01 compute]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.101 controller
10.0.0.102 network
10.0.0.103 compute01
- 設置hostname
[root@localhost ~]# hostnamectl set-hostname controller
[root@localhost ~]# hostname
controller
- 關閉selinux
[root@compute01 compute]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@compute01 compute]# setenforce 0
[root@compute01 compute]# getenforce
Permissive
- 關閉防火墻
[root@compute01 compute]# systemctl stop firewalld.service
[root@compute01 compute]# systemctl status firewalld.service
鈼firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2017-09-02 04:31:34 EDT; 18h ago
Main PID: 744 (code=exited, status=0/SUCCESS)
Sep 02 01:39:17 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 02 01:39:20 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Sep 02 04:31:33 compute01 systemd[1]: Stopping firewalld - dynamic firewall daemon...
Sep 02 04:31:34 compute01 systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@compute01 compute]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
4.2 配置YUM本地源
- 刪除官方源
[root@localhost ~]# mv /etc/yum.repos.d/CentOS-* /opt/
- 添加本地源
[root@compute01 compute]# cat /etc/yum.repos.d/mitaka.repo
[base]
name=base
baseurl=ftp://192.168.116.21/repos/base/Packages/
enabled=1
gpgcheck=0
[openstack]
name=OpenStack Ocata Repository
baseurl=ftp://192.168.116.21/repos/mitaka/centos-openstack-mitaka/
enabled=1
gpgcheck=0
[extras]
baseurl=ftp://192.168.116.21/repos/ocata/extras-ocata/
enabled=1
gpgcheck=0
name=extras
[update]
baseurl=ftp://192.168.116.21/repos/ocata/updates-ocata/
enabled=1
gpgcheck=0
name=update
- 檢查本地源是否可用
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
base | 2.9 kB 00:00:00
extras | 2.9 kB 00:00:00
openstack | 2.9 kB 00:00:00
update | 2.9 kB 00:00:00
(1/4): extras/primary_db | 135 kB 00:00:00
(2/4): openstack/primary_db | 759 kB 00:00:00
(3/4): update/primary_db | 3.6 MB 00:00:00
(4/4): base/primary_db | 5.6 MB 00:00:01
Determining fastest mirrors
repo id repo name status
base base 9,363
extras extras 311
openstack OpenStack Ocata Repository 1,675
update update 1,111
repolist: 12,460
以下步驟可通過腳本執行。
腳本說明:
凡是需要在執行前進行修改的腳本,可以通過查看腳本,找到
###############
# change here #
###############
cp -f conf/openstack.cnf /etc/my.cnf.d/openstack.cnf
# | script name | comment | 改 |
---|---|---|---|
1 | ~/controller/1_pre.sh | 包括步驟4.3、4.4、 5。需要人工設置數據庫初始化參數 | yes |
2 | ~/controller/2_keystone.sh | 包括步驟6 | no |
3 | ~/controller/3_glance.sh | 包括步驟7 | no |
4 | ~/controller/4_nova.sh | 包括步驟8.1,最后并沒有啟動服務,是因為我已經將neutron的相關配置提前寫在conf/nova.conf里面 | yes |
5 | ~/controller/5_neutron.sh | 包括步驟9.1。在這一步啟動4_nova.sh里面安裝的nova五個服務 | no |
6 | ~/network/neutron.sh | 包括步驟9.2 | yes |
7 | ~/compute/main.sh | 包括步驟8.2 | yes |
8 | ~/compute/compute_neutron.sh | 包括步驟9.3 | yes |
修改緊跟著的配置文件即可。
# | script name | comment | 改 |
---|---|---|---|
1 | ~/controller/1_pre.sh | 包括步驟4.3、4.4、 5。需要人工設置數據庫初始化參數 | yes |
2 | ~/controller/2_keystone.sh | 包括步驟6 | no |
3 | ~/controller/3_glance.sh | 包括步驟7 | no |
4 | ~/controller/4_nova.sh | 包括步驟8.1,最后并沒有啟動服務,是因為我已經將neutron的相關配置提前寫在conf/nova.conf里面 | yes |
5 | ~/controller/5_neutron.sh | 包括步驟9.1。在這一步啟動4_nova.sh里面安裝的nova五個服務 | no |
6 | ~/network/neutron.sh | 包括步驟9.2 | yes |
7 | ~/compute/main.sh | 包括步驟8.2 | yes |
8 | ~/compute/compute_neutron.sh | 包括步驟9.3 | yes |
4.3 安裝python-openstackclient,openstack-selinux
#yum install python-openstackclient openstack-selinux -y
4.4 配置時間服務器
#yum install chrony -y
4.4.1 控制節點作為標準時間
allow 10.0.0.0/24
啟動服務
systemctl enable chronyd.service
systemctl start chronyd.service
4.4.2 余下節點參照控制節點時間
server controller iburst
啟動服務
systemctl enable chronyd.service
systemctl start chronyd.service
5. 部署控制節點的基礎服務
需要安裝mariadb數據,rabbitmq,memcache三個服務,參照官方文檔。本實例配套配置文件可下載。
6. 部署keystone服務
7. 部署glance服務
8. 部署nova服務
8.1 控制節點
8.2 計算節點
9. 部署網絡服務
9.1 控制節點
-
創建數據庫相關操作
-
創建keystone用戶和角色
-
創建實體服務和endpoint
-
安裝軟件
yum install openstack-neutron openstack-neutron-ml2 python-neutronclient -y
-
修改配置文件
/etc/neutron/neutron.conf
/etc/neutron/plugins/ml2/ml2_conf.ini
/etc/nova/nova.conf 添加neutron 相關配置
-
創建配置文件鏈接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
-
同步數據庫
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
-
重啟nova服務
systemctl restart openstack-nova-api.service
-
重啟neutron服務
systemctl enable neutron-server.service
systemctl start neutron-server.service
9.2 網絡節點
-
系統內核修改
編輯/etc/sysctl.conf,添加下面三行
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
#sysctl -p
-
安裝軟件包
#yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch -y
-
修改配置文件
/etc/neutron/neutron.conf
/etc/neutron/plugins/ml2/openvswitch_agent.ini
/etc/neutron/l3_agent.ini
/etc/neutron/dhcp_agent.ini
/etc/neutron/metadata_agent.ini
-
啟動服務
#systemctl start neutron-openvswitch-agent.service neutron-l3-agent.service \
neutron-dhcp-agent.service neutron-metadata-agent.service
#systemctl enable neutron-openvswitch-agent.service neutron-l3-agent.service \
neutron-dhcp-agent.service neutron-metadata-agent.service
-
建網橋
刪除eno2的IP
[root@network ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno2
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno2
UUID=aa20f98f-c98c-4348-b464-eff24d1a7677
DEVICE=eno2
ONBOOT=yes
#IPADDR=10.0.0.102
#NETMASK=255.255.255.0
添加br-ex網橋的配置文件
[root@network ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
#HWADDR=bc:ee:7b:78:7b:a7
IPADDR=10.0.0.102
NETMASK=255.255.255.0
DNS1=114.114.114.114
NM_CONTROLLED=no
新建網橋并且將接口eno2接入網橋br-ex
#ovs-vsctl add-br br-ex
#ovs-vsctl add-port br-ex eno2
#systemctl restart network.service
9.3 計算節點
-
配置內核
不通過反向路由回溯進行源地址驗證
編輯 /etc/sysctl.conf
#net.ipv4.conf.all.rp_filter=0
#net.ipv4.conf.default.rp_filter=0
#sysctl -p
-
安裝軟件包
#yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-openvswitch -y
-
修改配置文件
/etc/neutron/neutron.conf
/etc/neutron/plugins/ml2/openvswitch_agent.ini
/etc/nova/nova.conf 添加neutron相關配置
-
啟動服務
#systemctl enable neutron-openvswitch-agent.service
#systemctl start neutron-openvswitch-agent.service
#systemctl restart openstack-nova-compute.service