• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

OpenStack搭建史上 极快入手

武飞扬头像
高龄码农创业
帮助3

前提环境

搭建openstack平台所需要的两个镜像包:CentOS-7-X86_64-DVD-1804.iso 和 chinaskill_cloud_iaas.iso镜像文件。

VMware上准备两台虚拟机,分别作为controller(控制)节点和compute节点. 下面是VMware上虚拟机的基础配置。

compute&&controller

双网卡,NAT模式和仅主机模式,配置硬盘各给50G

多添的一块网卡作为openstack对外提供服务的网络(创建云主机实例时使用的IP地址),默认的第一块网卡作为openstack本地服务的IP地址(访问openstack的WEB界面时的IP地址)

compute要加两块20G虚拟硬盘

controller内存4G以上 处理器两个以上

这里的NET模式的子网地址给的是100段(cidr)WEB访问的IP地址,仅主机模式的子网地址给的是200段的

这里controller节点给的IP是192.168.100.10

        compute节点给的IP是192.168.100.20

        网络配置器的网关设置的是192.168.100.02

一、基本配置

修改主机名

#controller执行 

[root@controller ~]hostnamectl set-hostname controller 

#compute 

[root@compute ~]hostnamectl set-hostname compute 

##修改后重新连接终端 

##MobaXterm中按ctrl d 退出 按R重新登陆 

##SecureCRTPortable中按ctrl d 退出 按回车重新登陆 

##直接bash执行也可,不过后面执行脚本可能报错

##su也可以使之生效
学新通

 学新通

配置网络

1.利用vi文本编辑器去配置虚拟机的虚拟网卡

#controller

[root@controller ~]vi /etc/sysconfig/network-scripts/ifcfg-ens33                #ifcfg-需要配置的网卡名

BOOTPROTO=dhcp            #修改为static静态IP

ONBOOT=no                 # 修改为yes,设为开机自启

#文件最后添加

IPADDR=192.168.100.10            #配置的IP地址,根据虚拟网络编辑器的网段来配置

NETMASK=255.255.255.0            #子网掩码,也可以用PREFIX=24来表示

GATEWAY=192.168.100.2            #网关

DNS1=114.114.114.114             #DNS域名解析

DNS2=8.8.8.8                     #备用DNS域名解析

# :wq (保存退出)
学新通

2.配置好后重启网络服务,使配置生效

[root@controller ~]systemctl restart network              #第一种重启网络的方法
[root@controller ~]service network restart                  #第二种重启网络的方法


#可能出现的问题:网络重启报错先停掉NetworkManager
[root@controller ~]systemctl stop NetworkManager

#也可以直接将NetworkManager,disable掉

3.看是否能ping通,利用远程工具(Xshell,SecureCRT,mobaXterm等)去连接虚拟机

[root@controller ~]ifconfig                                              #查看网卡的网络参数

[root@controller ~]ping 百度.com
第二快网卡无需配置,后面跑脚本的时候会自动将它kill掉,作为创建云主机实例的IP地址

4.当第一台VM虚拟机的网卡配置好,用命令或手动点击将VM虚拟机关机后,对它进行克隆,克隆出的虚拟机作为compute节点

poweroff                                      #第一种关机命令
shutdown -h now                               #第二种关机命令
init 0                                        #第三种关机命令
记得克隆时最好选择完全克隆,它是独立的,并不依赖controller节点,当你删掉controller节点也不会影响到compute节点。


克隆完成后重命名,修改它的配置,给compute虚拟机增加两块20G的硬盘,分别提供给cinder和swift组件


修改克隆机的IP地址IPADDR=192.168.100.20 


删除/etc/sysconfig/network-scripts/ifcfg-ens33文件中的UUID一行,UUID不能重复


在vi编辑器命令行模式下按dd删除光标所在的一行(因为克隆虚拟机的配置是controller节点的配置)

二、基本环境

1.配置域名解析文件

#contreller && compute

[root@controller ~]vim /etc/hosts

#结尾添加这两行IP地址 主机名

192.168.100.10    controller

192.168.100.20    compute



[root@controller ~]scp /etc/hosts 192.168.100.20:/etc/hosts
#将controller节点上的配置文件传输到compute节点上将其替换


#这一步做完后,后面就可以直接使用域名(controller,compute)来代替IP地址了

学新通

2.挂载镜像文件

#controller

[root@controller ~]mkdir /opt/{centos,openstack}             #创建两个需要被挂载的本地路径

#yum源配置好后,将iaas镜像上传,这里centos镜像虚拟机配置使用了,它默认存储在/dev/cdrom 或 /dev/sr0中,可以直接将存放centos镜像的路径挂载到/opt/centos下了


[root@controller ~]mount /dev/cdrom  /opt/centos/

#以只读方式挂载

#我们也可以在/etc/fstab中进行配置,让它开机自动挂载,这样在启动虚拟机时就不用再手动挂载了(用于直接挂载到挂载点的时候使用)

[root@controller ~]vim /etc/fstab

#在结尾添加

/dev/cdrom            /opt/centos               iso9660 defaults             0    0

 
#接下来在挂载iaas镜像

[root@controller ~]mount chinaskills_cloud_iaas.iso  /mnt/

[root@controller ~]cp -rvf /mnt/* /opt/openstack

[root@controller ~]umount /mnt/

3.配置本地yum源

#controller

#备份本地网络yum源
[root@controller ~]mv /etc/yum.repos.d/* /mnt/ 

[root@controller ~]vi /etc/yum.repos.d/centos.repo

[centos]

name=centos

baseurl=file:///opt/centos

gpgcheck=0

enabled=1

[iaas]

name=iaas

baseurl=file:///opt/openstack/iaas-repo

gpgcheck=0

enabled=1

#配置好本地yum源后,我们需要清理一下yum源缓存,和列出能用的yum仓库中的包

[root@controller ~]yum makecache 

#或

[root@controller ~]yum clean all;yum makecache 

#或

[root@controller ~]yum clean all;yum repolist
学新通

 如图挂载成功

#compute

#备份本地网络yum源
[root@compute ~]mv /etc/yum.repos.d/* /mnt/ 

#创建repo文件

[root@compute ~]vi /etc/yum.repos.d/centos.repo

[centos]

name=centos

baseurl=ftp://192.168.100.10/centos

gpgcheck=0

enabled=1

[iaas]

name=iaas

baseurl=ftp://192.168.100.10/openstack/iaas-repo

gpgcheck=0

enabled=1
学新通

[root@compute ~] yum makecache

4.搭建ftp服务器,开启并设置自启

#controller

[root@controller ~]yum install vsftpd -y 

[root@controller ~]vi /etc/vsftpd/vsftpd.conf 

#添加 
anon_root=/opt/ 
#保存退出 


#或:
echo "anon_root=/opt/" >> /etc/vsftpd/vsftpd.conf 


#重启服务,使修改的配置生效,并设置开机自启
[root@controller ~]systemctl start vsftpd && systemctl enable vsftpd 
学新通

#comput

#验证ftp 

[root@compute ~]curl -L ftp://192.168.100.10                       #ftp://controllerIP 

#这里连接成功会返回controller下opt目录内信息



[root@compute ~]yum clean all;yum makecache 

#或

[root@compute ~]yum clean all;yum repolist 

5.关闭防火墙

#contreller && compute

 #两个节点都需要关闭
[root@controller ~]systemctl stop firewalld.service && systemctl disable firewalld.service                      #关闭防火墙和移除防火墙

[root@controller ~]yum remove -y NetworkManager firewalld

[root@controller ~]yum -y install iptables-services

[root@controller ~]systemctl enable iptables

[root@controller ~]systemctl restart iptables

[root@controller ~]iptables -F

[root@controller ~]iptables -X

[root@controller ~]iptables -Z

[root@controller ~]service iptables save                #清空规则
学新通

##可以只关闭防火墙而不写入配置,在将要执行的脚本中会卸载掉防火墙,selinux同理,此时关闭是为了后面的ftp

6.关闭SELinux

#contreller && compute

#临时关闭selinux模式和永久关闭selinux规则

[root@controller ~]setenforce 0 && sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config 



[root@controller ~]getenforce                          #检测是否关闭selinux 



#可能出现问题:ssh远程连接慢时执行,一般不需要 

[root@controller ~]sed -i -e 's/#UseDNS yes /UseDns no/g' -e 's/GSSAPIAuthentcation 

yes/GSSAPIAuthenticationno/g' /etc/ssh/sshd_config 
学新通

三、编辑环境变量

#contreller && compute

[root@controller ~]yum install iaas-xiandian -y                          #安装xiandian包 

学新通

分盘(根据自己的情况)

# compute 分盘

#这里可以不用分盘了,因为我们一开始就多配置了两块虚拟硬盘,使用fdisk -l查看
[root@controller ~]fdisk /dev/sdb

n

#两次回车 

 100G

n

p

#三次回车 

w

lsblk       #查看 
学新通

1.修改xiandian服务的配置文件

# controller

#编辑文件/etc/xiandian/openrc.sh,此文件是安装过程中的各项参数,根据每项参数上一行的说明及服务器实际情况进行配置。 


[root@controller ~]cd /etc/xiandian/ 

[root@controller ~]sed -i "/=/s/#//g" openrc.sh 

[root@controller ~]sed -i "/PASS/s/PASS=/PASS=000000/g" openrc.sh 

#或:
[root@controller ~]vi /etc/xiandian/openrc.sh

#进入配置文件后需要在命令行模式下敲
:%s/^#//g                                                      # 一行中只带有一个#注释的,作用去除#注释
:%s/PASS=/PASS=000000/g                       # 将PASS=全部替换成PASS=000000,这样省的我们自己手动敲很多代码了


学新通

还需要手动修改,需要修改的地方已在后面增加注释        有的地方还需输入六个零

--------------------system Config--------------------##

Controller Server Manager IP. example:x.x.x.x

HOST_IP=192.168.100.10                            #controller节点的IP地址

Controller HOST Password. example:000000

HOST_PASS=000000
Controller Server hostname. example:controller

HOST_NAME=controller                              #controller节点的主机名

Compute Node Manager IP. example:x.x.x.x

HOST_IP_NODE=192.168.100.20                        #compute节点的IP地址

Compute HOST Password. example:000000

HOST_PASS_NODE=000000

Compute Node hostname. example:compute

HOST_NAME_NODE=compute                           #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               #控制节点的网段

--------------------Rabbit Config ------------------##

user for rabbit. example:openstack

RABBIT_USER=openstack                           #rabbit用户名

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                          #OpenStack中登录页面的认证域名
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.10                  #隧道接口的IP地址,填当前节点的IP地址即本机IP

External Network Interface. example:eth1

INTERFACE_NAME=ens36                           #第二块网卡作为外网,对外提供服务(云主机实例)的网卡名

External Network The Physical Adapter. example:provider

Physical_NAME=provider                         #物理适配器的外网

First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101

minvlan=5                                      #VLAN最小从5开始(自己根据需要来给定)

Last Vlan ID in VLAN RANGE for VLAN Network. example:200

maxvlan=201                                     #VLAN最大到201

--------------------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=sdb                                  #compute节点增加的第一快磁盘名称(lsblk查看)

--------------------Swift Config---------------------##

Password for Keystore swift user. exmaple:000000

SWIFT_PASS=000000

The NODE Object Disk for Swift. example:md126p4.

OBJECT_DISK=sdc                                 #compute节点的增加的第二快磁盘名称

The NODE IP for Swift Storage Network. example:x.x.x.x.

STORAGE_LOCAL_NET_IP=192.168.100.20             #对象存储的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


学新通

# controller

#通过scp方法将修改过的xiandian配置文件传输到compute节点

#scp发送: 

[root@controller ~]scp -rp openrc.sh root@192.168.100.20:/etc/xiandian/openrc.sh 

# 或 

[root@controller ~]scp !$ compute:/etc/xiandian/openrc.sh #此时应写入host,否则用IP代替compute 

#等效于 

[root@controller ~]scp /etc/xiandian/openrc.sh compute:/etc/xiandian/openr.sh 

##将controller目录下的文件传输到computer下,即把配置好的文件发给另一个节点(并替换对应文件) 
学新通

# compute

#在compute节点中配置文件/etc/xiandian/openrc.sh下修改第69行的IP地址,改成对应节点的IP地址(在compute节点只需修改这一行) 

[root@compute ~]INTERFACE_IP=192.168.100.20 

#修改完成后保存退出

学新通

四、通过脚本安装服务

1.执行脚本iaas-pre-host.sh进行安装

基础配置操作命令已经编写成shell脚本,通过脚本进行一键安装。如下:

Controller&&Compute

[root@controller ~]iaas-pre-host.sh

#安装完成后两个节点都需要Ctrl D同时重启一下虚拟机

#或

[root@controller ~]reboot

今天遇到一个yum安装报错如下:

错误:软件包:glibc-2.17-196.el7.i686 (centos7)
需要:glibc-common = 2.17-196.el7
已安装: glibc-common-2.17-222.el7.x86_64 (@anaconda)
glibc-common = 2.17-222.el7
可用: glibc-common-2.17-196.el7.x86_64 (centos7)

原因:yum源没有对应版本包匹配
解决办法:

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    sed -i  's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
    
    yum repolist 
    

2.接下来开始跑部署OpenStack各个组件的脚本了

进入/usr/local/bin目录下(脚本存放的位置)

学新通

这里为了方便,我在脚本中执行了一下脚本

ls | tee 1.sh        #查看当前目录下的脚本文件并将结果发送到tee命令,tee命令将输出显示到终端,同时将其保存在1.sh文件中


#在1.sh脚本中将几个需要跑的组件脚本排序,并将不需要跑的组件脚本删掉(在1.sh中操作,需熟练掌握vi编辑器下命令行模式(默认模式)下的快捷命令,在这里会用到 yy : 复制,p : 粘贴,dd : 删除 )

controller节点执行脚本顺序 [ mysql组件,keystone组件,glance组件,nova-controller组件,neutron-controller组件,dashboard组件,cinder-controller组件,swift-controller组件 ] (跑完controller节点,再跑compute节点

compute节点执行脚本的顺序 [ nova-compute组件,neutron-compute组件,cinder-compute组件,swift-compute组件]

#给1.sh增加可执行权限
chmod  x 1.sh

学新通

执行:

./1.sh

学新通

 五、搭建完成,web访问

两边都跑完后,去浏览器输入 192.168.100.10/dashboard 访问OpenStack

恭喜完成搭建!!!(一个萌新的攻略,有不对的地方还大神指教)

完成后可以关注我~~~去看我的另一篇   T版搭建       非常详细

这是我写的第一篇所以排版不是很好,多多关照

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfejfih
系列文章
更多 icon
同类精品
更多 icon
继续加载