ps: 原创作品,严禁用于商业目的。如有任何技术问题,欢迎和我交流:w104118078 (微信号)
一、基础环境准备
二、搭建openstack云平台
controller节点配置:
## 1.controller 网络配置
[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
type=ethernet
proxy_method=none
browser_only=no
bootproto=static
ipaddr=192.168.100.100
netmask=255.255.255.0
gateway=192.168.100.1
dns1=233.5.5.5
dns2=114.114.114.114
defroute=yes
ipv4_failure_fatal=no
ipv6init=yes
ipv6_autoconf=yes
ipv6_defroute=yes
ipv6_failure_fatal=no
ipv6_addr_gen_mode=stable-privacy
name=ens33
uuid=4933c159-8fcb-4646-a29f-6b5c8b4e79f
device=ens33
onboot=yes
[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
type=ethernet
proxy_method=none
browser_only=no
bootproto=static
ipaddr=192.168.200.100
netmask=255.255.255.0
defroute=yes
ipv4_failure_fatal=no
ipv6init=yes
ipv6_autoconf=yes
ipv6_defroute=yes
ipv6_failure_fatal=no
ipv6_addr_gen_mode=stable-privacy
name=ens34
uuid=932fef43-d94a-4a84-9b3f-428a85af8858
device=ens34
onboot=yes
## 2.修改主机名
[root@localhost ~]# hostnamectl set-hostname controller
[root@controller ~]# bash
## 3.修改 hosts 文件将 ip 地址映射为主机名
[root@controller ~] vi /etc/hosts
192.168.100.100 controller
192.168.100.200 compute
## 4.关闭防火墙
[root@controller ~]# systemctl disable firewalld
[root@controller ~]# systemctl stop firewalld
## 5.设置selinux
selinux有两个级别:
强制、警告
setenforce 0 :表示警告(permissive)
setenforce 1 :表示强制(enforcing)
状态分为以下三种:
selinux=enforcing #selinux开启,级别为强制
selinux=permissive #selinux开启,级别为警告
selinux=disabled #selinux关闭
[root@controller ~]# setenforce 0 # 临时设置等级,重启失效
[root@controller ~]# vi /etc/selinux/conf # 重启后,永久生效
selinux=permissive
## 6.配置yum源
上传 centos 7 iso镜像文件和iaas iso镜像文件到controller主机root目录下面
[c:\~]$ scp d:\chinaskills_cloud_iaas.iso root@192.168.200.100:/root
[c:\~]$ scp d:\centos-7-x86_64-dvd-1804.iso root@192.168.200.100:/root
[root@controller ~]# ls
anaconda-ks.cfg centos-7-x86_64-dvd-1804.iso chinaskills_cloud_iaas.iso
挂载镜像到opt目录下(临时挂载,重启失效)
[root@controller ~]# mount -o loop chinaskills_cloud_iaas.iso /opt/iaas/
mount: /dev/loop is write-protected, mounting read-only
[root@controller ~]# mount -o loop centos-7-x86_64-dvd-1804.iso /opt/centos/
mount: /dev/loop is write-protected, mounting read-only
——————————————————————————————————————————————————————————————————————————————————————
[root@controller ~]# vi /etc/fstab # 永久挂载
/dev/mapper/centos-root / xfs defaults 0 0
uuid=fda6f1d5-b8c5-4401-a68b-b2ab67ed8370 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#添加以下内容
#镜像名称 挂载路径 格式
/root/centos-7-x86_64-dvd-1804.iso /opt/centos iso9660 defaults 0 0
/root/chinaskills_cloud_iaas.iso /opt/iaas iso9660 defaults 0 0
[root@controller ~]# gzip /etc/yum.repo.d/* # 使原yum源失效
[root@controller ~]# vi /etc/yum.repo.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1
[root@controller ~]# yum clean all # 清除yum源缓存
[root@controller ~]# yum repolist # 验证yum源
## 7.搭建vsftpd
[root@controller ~]# yum install -y vsftpd
[root@controller ~]# echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf # 修改vsftp 共享服务根目录
[root@controller ~]# systemctl enable vsftpd
[root@controller ~]# systemctl start vsftpd
## 8.时间同步配置
[root@controller ~]# yum -y install chrony
[root@controller ~]# vi /etc/chrony.conf # 修改配置文件
server controller iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.100.0/24
local stratum 10
logdir /var/log/chrony
[root@controller ~]# systemctl restart chronyd # 重启chrony服务
[root@controller ~]# systemctl enable chronyd # 设置开机自启动
compute节点配置:
## 1.compute 网络配置
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
type=ethernet
proxy_method=none
browser_only=no
bootproto=static
ipaddr=192.168.100.200
netmask=255.255.255.0
gateway=192.168.100.1
dns1=233.5.5.5
dns2=114.114.114.114
defroute=yes
ipv4_failure_fatal=no
ipv6init=yes
ipv6_autoconf=yes
ipv6_defroute=yes
ipv6_failure_fatal=no
ipv6_addr_gen_mode=stable-privacy
name=ens33
uuid=4933c159-8fcb-4646-a29f-6b5c8b4e79f8
device=ens33
onboot=yes
[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
type=ethernet
proxy_method=none
browser_only=no
bootproto=static
ipaddr=192.168.200.200
netmask=255.255.255.0
defroute=yes
ipv4_failure_fatal=no
ipv6init=yes
ipv6_autoconf=yes
ipv6_defroute=yes
ipv6_failure_fatal=no
ipv6_addr_gen_mode=stable-privacy
name=ens34
uuid=932fef43-d94a-4a84-9b3f-428a85af8858
device=ens34
onboot=yes
## 2.修改主机名
[root@localhost ~]# hostnamectl set-hostname compute
[root@compute ~]# bash
## 3.修改 hosts 文件将 ip 地址映射为主机名
[root@compute ~] vi /etc/hosts
192.168.100.100 compute
192.168.100.200 compute
## 4.关闭防火墙
[root@compute ~]# systemctl disable firewalld
[root@compute ~]# systemctl stop firewalld
## 5.设置selinux
selinux有两个级别:
强制、警告
setenforce 0 :表示警告(permissive)
setenforce 1 :表示强制(enforcing)
状态分为以下三种:
selinux=enforcing #selinux开启,级别为强制
selinux=permissive #selinux开启,级别为警告
selinux=disabled #selinux关闭
[root@compute ~]# setenforce 0 # 临时设置等级,重启失效
[root@compute ~]# vi /etc/selinux/conf # 重启后,永久生效
selinux=permissive
## 6.配置yum源
[root@compute ~]# gzip /etc/yum.repo.d/* # 使原yum源失效
[root@compute ~]# vi /etc/yum.repo.d/local.repo
[centos]
name=centos
baseurl=ftp://controller/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://controller/iaas/iaas-repo
gpgcheck=0
enabled=1
[root@compute ~]# yum clean all # 清除yum源缓存
[root@compute ~]# yum repolist # 验证yum源
## 7.时间同步设置
[root@compute ~]# yum -y install chrony
[root@compute ~]# vi /etc/chrony.conf
server controller iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
[root@compute ~]# systemctl restart chronyd # 重启chrony服务
[root@compute ~]# chronyc sources -v
# 结尾显示为 ^* controller 则是同步成功
## 8.设置硬盘分区
[root@compute ~]# lsblk
name maj:min rm size ro type mountpoint
sda 8:0 0 20g 0 disk
├─sda1 8:1 0 1g 0 part /boot
└─sda2 8:2 0 19g 0 part
├─centos-root 253:0 0 17g 0 lvm /
└─centos-swap 253:1 0 2g 0 lvm [swap]
sdb 8:16 0 200g 0 disk
sr0 11:0 1 4.2g 0 rom
[root@compute ~]# fdisk /dev/sdb
command (m for help): n
select (default p): p
partition number (1-4, default 1):
first sector (2048-419430399, default 2048):
using default value 2048
last sector, +sectors or +size{k,m,g} (2048-419430399, default 419430399): +25g # 输入 +25g ,将sdb 硬盘分区1 设置为25g大小
command (m for help): n
select (default p): p
partition number (2-4, default 2):
first sector (52430848-419430399, default 52430848):
using default value 52430848
last sector, +sectors or +size{k,m,g} (52430848-419430399, default 419430399): +25g #
输入 +20g ,将sdb 硬盘分区2 设置为25g大小
partition 2 of type linux and of size 25 gib is set
command (m for help): w # 输入w更新磁盘并退出
the partition table has been altered!
三、正式搭建openstack云平台
controller节点配置:
[root@controller ~]# yum install -y iaas-xiandian
[root@controller ~]# vi /etc/xiandian/openrc.sh
命令模式下输入::%s/^#//g # 将#号去掉
#--------------------system config--------------------##
#controller server manager ip. example:x.x.x.x
host_ip=192.168.100.100 #controller节点的ip地址
#controller host password. example:000000
host_pass=000000
#controller server hostname. example:controller
host_name=controller
#compute node manager ip. example:x.x.x.x
host_ip_node=192.168.100.200 #compute节点的ip地址
#compute host password. example:000000
host_pass_node=000000
#compute node hostname. example:compute
host_name_node=compute
#--------------------chrony config-------------------##
#controller network segment ip. example:x.x.0.0/16(x.x.x.0/24)
network_segment_ip=192.168.100.0/24 #controller节点所在的网段
#--------------------rabbit config ------------------##
#user for rabbit. example:openstack
rabbit_user=openstack
#password for rabbit user .example:000000
rabbit_pass=000000
#--------------------mysql config---------------------##
#password for mysql root user . exmaple:000000
db_pass=000000
#--------------------keystone config------------------##
#password for keystore admin user. exmaple:000000
domain_name=demo
admin_pass=000000
demo_pass=000000
#password for mysql keystore user. exmaple:000000
keystone_dbpass=000000
#--------------------glance config--------------------##
#password for mysql glance user. exmaple:000000
glance_dbpass=000000
#password for keystore glance user. exmaple:000000
glance_pass=000000
#--------------------nova config----------------------##
#password for mysql nova user. exmaple:000000
nova_dbpass=000000
#password for keystore nova user. exmaple:000000
nova_pass=000000
#--------------------neturon config-------------------##
#password for mysql neutron user. exmaple:000000
neutron_dbpass=000000
#password for keystore neutron user. exmaple:000000
neutron_pass=000000
#metadata secret for neutron. exmaple:000000
metadata_secret=000000
#tunnel network interface. example:x.x.x.x
interface_ip=192.168.100.100 #本机ip地址
#external network interface. example:eth1
interface_name=ens33
#external network the physical adapter. example:provider
physical_name=provider
#first vlan id in vlan range for vlan network. exmaple:101
minvlan=101
#last vlan id in vlan range for vlan network. example:200
maxvlan=200
#--------------------cinder config--------------------##
#password for mysql cinder user. exmaple:000000
cinder_dbpass=000000
#password for keystore cinder user. exmaple:000000
cinder_pass=000000
#cinder block disk. example:md126p3
block_disk=sdb1 #compute节点的存储块
#--------------------swift config---------------------##
#password for keystore swift user. exmaple:000000
swift_pass=000000
#the node object disk for swift. example:md126p4.
object_disk=sdb2 #compute节点的存储块
#the node ip for swift storage network. example:x.x.x.x.
storage_local_net_ip=192.168.100.200 #compute节点的ip地址
#--------------------heat config----------------------##
#password for mysql heat user. exmaple:000000
heat_dbpass=000000
#password for keystore heat user. exmaple:000000
heat_pass=000000
#--------------------zun config-----------------------##
#password for mysql zun user. exmaple:000000
zun_dbpass=000000
#password for keystore zun user. exmaple:000000
zun_pass=000000
#password for mysql kuryr user. exmaple:000000
kuryr_dbpass=000000
#password for keystore kuryr user. exmaple:000000
kuryr_pass=000000
#--------------------ceilometer config----------------##
#password for gnocchi ceilometer user. exmaple:000000
ceilometer_dbpass=000000
#password for keystore ceilometer user. exmaple:000000
ceilometer_pass=000000
#--------------------aodh config----------------##
#password for mysql aodh user. exmaple:000000
aodh_dbpass=000000
#password for keystore aodh user. exmaple:000000
aodh_pass=000000
#--------------------barbican config----------------##
#password for mysql barbican user. exmaple:000000
barbican_dbpass=000000
#password for keystore barbican user. exmaple:000000
barbican_pass=000000
[root@controller ~]# source /etc/xiandian/openrc.sh # 环境配置生效
[root@controller ~]# scp /etc/xiandian/openrc.sh root@compute:/etc/xiandian/openrc.sh # 将controller节点的脚本拷贝到compute节点
compute节点配置:
[root@compute ~]# yum install -y iaas-xiandian
[root@compute ~]# vi /etc/xiandian/openrc.sh # 修改脚本
interface_ip=192.168.100.200 #本机ip地址
刷脚本:
controller节点:
安装openstack包,配置域名解析,防火墙和selinux,安装ntp服务等
[root@controller ~]# iaas-pre-host.sh # 刷完脚本后需要重启
ps:注意使用临时挂载的话,controller节点重启后,需要重新挂载yum源
安装rabbitmq服务、mysql、memcahce等
[root@controller ~]# iaas-install-mysql.sh
安装keystone服务包,创建keystone数据库,配置数据库连接
[root@controller ~]# iaas-install-keystone.sh
安装glance镜像服务包,创建glance数据库,配置数据库连接
[root@controller ~]# iaas-install-glance.sh
安装nova
[root@controller ~]# iaas-install-nova-controller.sh
安装neutron
[root@controller ~]# iaas-install-neutron-controller.sh
安装dashboard
[root@controller ~]# iaas-install-dashboard.sh
compute节点:
安装openstack包,配置域名解析,防火墙和selinux,安装ntp服务等
[root@compute ~]# iaas-pre-host.sh # 刷完脚本后需要重启
安装nova
[root@compute ~]# iaas-install-nova-compute.sh
安装neutron
[root@compute ~]# iaas-install-neutron-compute.sh
四、 登录openstack云平台
在浏览器界面输入192.168.100.100/dashboard
发表评论