前言
准备
1、准备CentOS-7-x86_64-DVD-1511.iso镜像
2、准备XianDian-IaaS-v2.2.iso镜像
3、准备VMware workstation16软件并制作好两个muban,可以查看我的虚拟机muban制作教程
开始
案例主要步骤
(1)了解OpenStack平台部署方法
(2)了解脚本部署方式
(3)使用脚本部署OpenStack平台
案例主要的架构
1、一台控制节点和一台计算节点组成简单架构OpenStack平台,控制节点安装MySQL、Keystone、Glance、Nova、Nova、Neutron、Dashboard等服务,主要最为认证、镜像管理节点,以及提供Nova和Neutron服务的管理节点。提供Dashboard界面服务。
计算节点主要安装nova-compute和Neutron服务,Nova服务提供云主机服务,Neutron提供网络服务。
通过Shell脚本进行OpenStack平台部署,脚本分为控制节点脚本和计算节点脚本,对应对剑执行部署脚本。
2、规划节点
安装OpenStack平台的2个节点规划
IP | 主机名 | 节点 |
192.168.10.10 | controller | 控制节点 |
182.168.10.20 | compute | 计算机节点 |
点,第一张网卡为仅主机模式,第二张网卡为 NAT 模式,以及配置 CPU 虚拟化,计算节点
至少使用 4 GB 内存,硬盘不小于 50 GB。第一张网卡网段为 192.168.10.0/24,第二张网卡
网段为 192.168.20.0/24。并对 compute 节点分两个区为 sda3 与 sda4。
基础环境配置
IP地址配置
控制节点和计算节点,安装最小化CentOS7.2操作系统,配置每个节点IP地址。并使用secureCRT 进行连接。
controller 节点修改部分:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
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=eno16777736
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
compute 节点修改部分:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
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=eno16777736
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.10.20
NETMASK=255.255.255.0
上传基础镜像
上传 XianDian-IaaS-v2.2.iso 和 CentOS-7-x86_64-DVD-1511.iso 两个镜像包至 controller
节点/root 目录中,并将 ISO 文件挂载至/opt/目录中。(镜像必须要永久挂载(yum挂载),不会的可查看我的虚拟机muban制作)
[root@localhost ~]# ll
total 7012772
-rw-------. 1 root root 1319 Oct 31 13:17 anaconda-ks.cfg
-rw-r--r--. 1 root root 4329570304 Jan 16 2017 CentOS-7-x86_64-DVD-1511.iso
-rw-r--r--. 1 root root 2851502080 Nov 5 2017 XianDian-IaaS-v2.2.iso
[root@localhost ~]# mkdir /opt/centos7.2
[root@localhost ~]# mkdir /opt/iaas
[root@localhost ~]# mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos7.2/
[root@localhost ~]# mount /root/XianDian-IaaS-v2.2.iso /opt/iaas/
配置YUM源文件
controller 节点:
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos7.2
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1
compute节点:
[centos]
name=iaas
baseurl=ftp://192.168.10.10/centos7.2
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.10.10/iaas/iaas-repo
gpgcheck=0
enabled=1
在控制节点清除yum源,显示所有可用仓库 [root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist
控制节点安装ftp服务
控制节点安装vsftp服务,设置开机自启,提供计算节点ftp访问方式。
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]#
systemctl enable vsftpd
在/etc/vsftpd/vsftpd.conf 配置中添加一行代码:
anon_root=/opt
重启 vsftpd 服务:
[root@localhost ~]# systemctl restart vsftpd
计算节点配置YUM源
控制节点的vsftpd服务没有问题后,计算节点执行以下命令
[root@localhost ~]# yum clean all
[root@localhost ~]# yum repolist
配置防火墙策略
在控制节点和计算节点中关闭防火墙:
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -X
[root@localhost ~]# iptables -Z
[root@localhost ~]# systemctl stop firewalld 关闭防火墙
[root@localhost ~]# systemctl enable firewalld
关闭防火墙开机自启
磁盘分区
#为cinder和swift分区,以50 GB,每个服务给5 GB的方式为例。(具体大小看自己情况,仅参考)
#如果空间不够,先扩充虚拟硬盘,加10G(根据实际要求来)
[root@localhost ~]# lsblk #列出所有可用块设备的信息
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 39.5G 0 part
└─centos-root 253:0 0 39.5G 0 lvm /
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# parted /dev/sda
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
(parted) p #显示分区表、可用设备、可用空间、所有找到的分区或特定分区
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 525MB 524MB primary xfs boot
2 525MB 43.0GB 42.4GB primary lvm
(parted)
(parted) mkpart cinder #创建分区
parted: invalid token: cinder
Partition type? primary/extended? p #主分区/扩展分区?扩展
File system type? [ext2]? ext4 #Ext4——第四代扩展文件系统
Start? 43.0GB #从上个分区的 End 开始(Number 2)
End? 48.0GB #给 5 GB的空间
(parted)
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags
Number Start End Size Type File system Flags
1 1049kB 525MB 524MB primary xfs boot
2 525MB 43.0GB 42.4GB primary lvm
3 43.0GB 48.0GB 5046MB primary
(parted)
(parted) mkpart swift
parted: invalid token: swift
Partition type? primary/extended? p
File system type? [ext2]? ext4
Start? 48.0GB
End? 53.0GBls
(parted)
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 525MB 524MB primary xfs boot
2 525MB 43.0GB 42.4GB primary lvm
3 43.0GB 48.0GB 5046MB primary
4 48.0GB 53.0GB 5001MB primary
(parted)
(parted) q #退出parted
Information: You may need to update /etc/fstab.
[root@localhost ~]#
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 39.5G 0 part
│ └─centos-root 253:0 0 39.5G 0 lvm /
├─sda3 8:3 0 4.7G 0 part #cinder分区
└─sda4 8:4 0 4.7G 0 part #swift分区
sr0 11:0 1 1024M 0 rom
[root@localhost ~]#
安装 iaas-xiandian 服务
在控制节点和计算节点安装 iaas-xiandian 软件包。
yum install iaas-xiandian -y
配置环境变量
控制节点和计算节点配置环境变量的配置文件/etc/xiandian/openrc.sh,配置参数说明如
下:(编辑过程中会有很多“#”号,如何快速的删除“#”号,Ctrl+v,Shift+g,d,即可)
vi /etc/xiandian/openrc.sh
#按如下修改配置,其中,第75行和89行是上面硬盘配置给cinder、swift留空的分区名称,具体名称以上面分区后的名称为准。可以改好一个SCP至另一个节点
1 ##——————–system Config——————–##
2 ##Controller Server Manager IP. example:x.x.x.x
3 HOST_IP=192.168.100.10
4
5 ##Controller Server hostname. example:controller
6 HOST_NAME=controller
7
8 ##Compute Node Manager IP. example:x.x.x.x
9 HOST_IP_NODE=192.168.100.20
10
11 ##Compute Node hostname. example:compute
12 HOST_NAME_NODE=compute
13
14 ##——————–Rabbit Config ——————##
15 ##user for rabbit. example:openstack
16 RABBIT_USER=openstack
17
18 ##Password for rabbit user .example:000000
19 RABBIT_PASS=000000
20
21 ##——————–MySQL Config———————##
22 ##Password for MySQL root user . exmaple:000000
23 DB_PASS=000000
24
25 ##——————–Keystone Config——————##
26 ##Password for Keystore admin user. exmaple:000000
27 DOMAIN_NAME=demo
28 ADMIN_PASS=000000
29 DEMO_PASS=000000
30
31 ##Password for Mysql keystore user. exmaple:000000
32 KEYSTONE_DBPASS=000000
33
34 ##——————–Glance Config——————–##
35 ##Password for Mysql glance user. exmaple:000000
36 GLANCE_DBPASS=000000
37
38 ##Password for Keystore glance user. exmaple:000000
39 GLANCE_PASS=000000
40
41 ##——————–Nova Config———————-##
42 ##Password for Mysql nova user. exmaple:000000
43 NOVA_DBPASS=000000
44
45 ##Password for Keystore nova user. exmaple:000000
46 NOVA_PASS=000000
47
48 ##——————–Neturon Config——————-##
49 ##Password for Mysql neutron user. exmaple:000000
50 NEUTRON_DBPASS=000000
51
52 ##Password for Keystore neutron user. exmaple:000000
53 NEUTRON_PASS=000000
54
55 ##metadata secret for neutron. exmaple:000000
56 METADATA_SECRET=000000
57
58 ##External Network Interface. example:eth1
59 INTERFACE_NAME=eno33554960 第二张网卡的ID
60
61 ##First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
62 minvlan=
63
64 ##Last Vlan ID in VLAN RANGE for VLAN Network. example:200
65 maxvlan=
66
67 ##——————–Cinder Config——————–##
68 ##Password for Mysql cinder user. exmaple:000000
69 CINDER_DBPASS=000000
70
71 ##Password for Keystore cinder user. exmaple:000000
72 CINDER_PASS=000000
73
74 ##Cinder Block Disk. example:md126p3
75 BLOCK_DISK=sda3
76
77 ##——————–Trove Config——————–##
78 ##Password for Mysql Trove User. exmaple:000000
79 TROVE_DBPASS=000000
80
81 ##Password for Keystore Trove User. exmaple:000000
82 TROVE_PASS=000000
83
84 ##——————–Swift Config———————##
85 ##Password for Keystore swift user. exmaple:000000
86 SWIFT_PASS=000000
87
88 ##The NODE Object Disk for Swift. example:md126p4.
89 OBJECT_DISK=sda4
90
91 ##The NODE IP for Swift Storage Network. example:x.x.x.x.
92 STORAGE_LOCAL_NET_IP=192.168.100.20 compute节点第一张网卡的IP地址
93
94 ##——————–Heat Config———————-##
95 ##Password for Mysql heat user. exmaple:000000
96 HEAT_DBPASS=000000
97
98 ##Password for Keystore heat user. exmaple:000000
99 HEAT_PASS=000000
100
101 ##——————–Ceilometer Config—————-##
102 ##Password for Mysql ceilometer user. exmaple:000000
103 CEILOMETER_DBPASS=000000
104
105 ##Password for Keystore ceilometer user. exmaple:000000
106 CEILOMETER_PASS=000000
107
108 ##——————–AODH Config—————-##
109 ##Password for Mysql AODH user. exmaple:000000
110 AODH_DBPASS=000000
111
112 ##Password for Keystore AODH user. exmaple:000000
113 AODH_PASS=000000
#controller节点弄好之后,直接复制给compute节点
scp /etc/xiandian/openrc.sh root@192.168.100.20:/etc/xiandian/
控制节点安装NTP
如果你是用虚拟机搭建的话这一步可以省略。
(在Linux系统中,为了避免主机时间因为在长时间运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务来同步不同机器的时间。NTP 是网络时间协议(Network Time Protocol)的简称,干嘛用的呢?就是通过网络协议使计算机之间的时间同步化。)
[root@controller~]
yum install ntp -y[root@controller~]
vi /etc/ntp.conf
#注释以下四行:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
#添加以下两行:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
设置完成之后重新启动ntpd[root@controller~]
systemctl restart ntpd[root@controller~]
systemctl enable ntpd
计算节点安装NTP
[root@compute~]
yum install ntpdate -y[root@compute~]
systemctl enable ntpdate[root@compute~]
ntpdate 192.168.100.10
设置开机自启[root@compute~]systemctl enable ntpd
使用脚本安装OpenStack平台
#脚本执行是不可逆的,保证严格的顺序,执行错误就要重来。双节点脚本建议同时安装(虚拟机可以创建快照)
#脚本目录一般位于:/usr/local/bin/
安装基础服务
控制节点和计算节点通过脚本安装基础服务:
[root@localhost ~]# iaas-pre-host.sh
控制节点安装完成后,按 Ctrl+D 键退出并重新登录,使主机名生效,如图
计算节点安装完成后,按 Ctrl+D 键退出并重新登录,使主机名生效,如图
安装MySQL数据库服务
控制节点通过脚本安装 MySQL 数据库服务:
[root@controller~]# iaas-install-mysql.sh
安装 Keystone 认证服务
控制节点通过脚本安装 Keystone 认证服务:
[root@controller ~]# iaas-install-keystone.sh
安装 Glance 镜像服务
控制节点通过脚本安装 Glance 镜像服务:
[root@controller ~]# iaas-install-glance.sh
安装 Nova 计算服务
controller 节点通过脚本安装计算服务:
[root@controller ~]# iaas-install-nova-controller.sh
compute 节点通过脚本安装计算服务:
[root@compute~]# iaas-install-nova-compute.sh
安装 Neutron 网络服务
controller 节点通过脚本安装网络服务:
[root@controller ~]# iaas-install-neutron-controller.sh
[root@controller ~]# iaas-install-neutron-controller-gre.sh
compute 节点通过脚本安装网络服务:
[root@compute~]# iaas-install-neutron-compute.sh
[root@compute~]# iaas-install-neutron-compute-gre.sh
注意: 这里compute节点安装 gre.sh 完成之后没有返回提示为正常;controller节点安装最后会出现:
Unknown operation ‘enabled’.
这是脚本错误,查看脚本文件:
cat /usr/local/bin/iaas-install-neutron-controller-gre.sh
······
systemctl restart neutron-lbaas-agent
systemctl enabled neutron-lbaas-agent
enabled 改为 enable,执行 systemctl enable neutron-lbaas-agent 。
安装 Dashboard 服务
controller 节点通过脚本安装 Dashboard 服务:
[root@controller ~]# iaas-install-dashboard.sh
安装 Cinder 块存储服务
controller 节点通过脚本安装块存储服务:
[root@controller ~]# iaas-install-cinder-controller.sh
compute 节点通过脚本安装块存储服务:
[root@compute~]# iaas-install-cinder-compute.sh
安装 Swift 对象存储服务
controller 节点通过脚本安装对象存储服务:
[root@controller ~]# iaas-install-swift-controller.sh
compute 节点通过脚本安装对象存储服务:
[root@compute ~]# iaas-install-swift-compute.sh
计算节点中途会让你输入yes/no,输入yes,然后再输入密码000000.
访问 Dashboard 服务
打开浏览器,访问 https://192.168.10.10/dashboard 地址,输入环境变量文件中填写的密码,
域为 demo、用户名为 admin、密码为 000000,然后单击“连接”按钮,如图
登录后即可访问到 Dashboard 系统,如图
到了这一步OpenStack私有云平台已经搭建完成了!