一、基础环境准备
1、虚拟机创建
创建如下两个虚拟机:
控制节点:内存4G、CPU2核、硬盘40G、网卡1-仅主机模式、网卡2-NAT模式
计算节点:内存4G、CPU2核、硬盘1-40G、硬盘2-40G、网卡1-仅主机模式、网卡2-NAT模式
操作步骤:文件——新建虚拟机——(典型)下一步——(稍后安装操作系统)下一步——(LINUX)(CentOS7 64位)下一步——》
名称改为 hqs-控制节点,位置改为:D:\hqs\hqs-控制节点,再点下一步——》磁盘40G,默认多个——完成——编辑虚拟机设置——
内存改为4096M、处理器改为1处理器2核、点选Intel VT-x/EPT——》点“添加”——网络适配器——设置网卡1为仅主机、网卡2为NAT。——》
CD/DVD选择ISO文件:CentOS-7-x86_64-DVD-1804.iso。
右键点“hqs-控制节点”——》管理-克隆——》克隆方法:创建完整克隆——》名称改为“hqs-计算节点”、位置改为:D:\hqs\hqs-计算节点——》
完成。
hqs-计算节点——》点击“编辑虚拟机设置”——》点击"添加"——》选择硬盘——》创建新虚拟磁盘——》磁盘大小40G,且拆分多个文件
2、网络环境配置
点击VMWARE最上方菜单栏的“编辑”——》“虚拟网络编辑器”——》需要修改,点击“更改设置”——》点击“添加网络”-"VMnet1"-点确定。
点选“VMnet1”——》点选“仅主机模式”——》子网IP改为192.168.10.0——》可自行选择是否配置DHCP——》点选“VMnet8”——》点选“NAT模式”——》
子网IP改为192.168.20.0——点击“确定”
修改hqs-控制节点网卡配置:点击“编辑虚拟机设置”——》点选“网络适配器”——》点选“自定义”——》点选“VMnet1(仅主机模式)”——》
点选“网络适配器1”——》点选“自定义”——》点选“VMnet8(NAT模式)”
同上修改hqs-计算节点网卡配置。
3、安装centos系统
hqs-控制节点操作:“开启虚拟机”——》上下选择到“Install CentOS 7”——》默认选english,点continue——》点“DATE&TIME”,选Asia-Shanghai,
点击Done——》INSTALLATION DESTINATION,选Done自动分区——》KDUMP点选取消——》Begin Installation——》ROOT PASSWORD设置为“1234”.
hqs-计算节点操作同上,仅在INSTALLATION DESTINATION时,选择第一个磁盘,然后Done自动分区。
4、修改网卡配置
根据网卡添加顺序,ens33对应第一块网卡,ens34对应第二块网卡。
先修改控制节点网卡配置:
# 切换到网卡路径
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
# 修改ens33
[root@localhost network-scripts]# vi ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
# 修改ens34
[root@localhost network-scripts]# vi ifcfg-ens34
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.20.10
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
# 重启网络
[root@localhost network-scripts]# systemctl restart network
再修改计算节点网卡配置:
# 切换到网卡路径
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
# 修改ens33
[root@localhost network-scripts]# vi ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.10.20
NETMASK=255.255.255.0
# 修改ens34
[root@localhost network-scripts]# vi ifcfg-ens34
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.20.20
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
# 重启网络
[root@localhost network-scripts]# systemctl restart network
5、配DNS
配DNS之前要保证NAT模式的网卡,有配置网关(GATEWAY).
修改两台机器的 /etc/resolv.conf
文件。
[root@localhost ~]# vi /etc/resolv.conf
nameserver 8.8.8.8
# 修改后重启网卡
[root@localhost ~]# systemctl restart network
# 重启后测试ping百度
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.119.104.254) 56(84) bytes of data.
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=128 time=25.2 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=2 ttl=128 time=24.3 ms
6、yum源配置
# 切换到yum目录
[root@controller ~]# cd /etc/yum.repos.d/
# 创建备份目录
[root@controller yum.repos.d]# mkdir repo.bak
[root@controller yum.repos.d]# ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo ....
# 把原来的yum文件移到到备份目录
[root@controller yum.repos.d]# mv *.repo repo.bak/
# 下载阿里的yum源
[root@controller yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2523 100 2523 0 0 20847 0 --:--:-- --:--:-- --:--:-- 21025
# 清理yum
[root@controller yum.repos.d]# yum clean all && yum makecache
# 安装net-tools包
[root@localhost ~]# yum install -y net-tools
# 测试
[root@localhost ~]# ifconfig
2、主机名修改
# 修改主机名
[root@asdad yum.repos.d]# hostnamectl set-hostname controller
# 让修改生效显示
[root@asdad yum.repos.d]# bash
[root@controller yum.repos.d]#
# 修改后hostname文件内容对应修改
[root@controller yum.repos.d]# cat /etc/hostname
controller
3、本地域名的解析
直接通过主机名访问主机,需要将主机名和IP地址进行绑定,绑定工作可以通过本地域名解析来实现。
Linux中的 /etc/hosts
文件可以将一些常用的域名和对应的IP建立对应关系。
默认hosts文件内容和意义:
[root@controller ~]# cat /etc/hosts
# 每一行都表示一个域名到Ip地址的映射关系
# 127.0.0.1表示IPv4的本地IP地址
# ::1表示IPv6的本地IP地址
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 # 第一个名称是主机名,后面的为主机的别名
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 第一个名称是主机名,后面的为主机的别名
案例:将controller解析为内网IP——192.168.10.10
# 添加解析信息到文件最后一行
[root@controller ~]# echo '192.168.10.10 controller' >> /etc/hosts
[root@controller ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 controller
# ping通,解析正常
[root@controller ~]# ping controller
PING controller (192.168.10.10) 56(84) bytes of data.
64 bytes from controller (192.168.10.10): icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from controller (192.168.10.10): icmp_seq=2 ttl=64 time=0.034 ms
4、防火墙管理
CentOS7系统默认使用firewall作为系统防火墙,管理功能集成在系统服务管理命令 systemctl
中。
常用参数 | 功能说明 |
---|---|
status | 查看服务运行状态 |
start | 开启服务 |
stop | 停止服务 |
enable | 服务开机启动 |
disable | 服务开机禁用 |
restart | 重启服务 |
# 停止防火墙和禁止开机启动防火墙
[root@controller ~]# systemctl stop firewalld && systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
# 查看防火墙是否关闭
[root@controller ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
二、Openstack基础支持服务
Openstack平台需要借助多种第三方提供的基础服务才能正常运行,数据库、消息队列、时间同步、缓存服务等。
1、Chrony时间同步服务
同一个系统内的计算机时间必须保持一致才能保证系统工作正常。
Chrony软件是一款开源的自由软件,包括两个核心组件:chronyd(后台守护程序)和chronyc(命令行用户管理工具)。
(1)时间同步服务配置
通过修改chrony配置可以将任意一台计算机配置成NTP服务器或NTP服务器连接的客户端。
# 安装chrony
[root@controller ~]# yum install -y chrony
# 查看chrony配置文件
[root@controller ~]# cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst # Centos官方提供了4个NTP服务器
server 2.centos.pool.ntp.org iburst # iburst作用:设置当NTP服务器一定时间没有应答时,客户端发送8倍数据包以提升同步成功率
server 3.centos.pool.ntp.org iburst
...略
# Allow NTP client access from local network.
allow 192.168.10.0/24 # 设置允许某个网段的chrony客户端使用本机NTP服务
...略
# 修改配置后,重启服务生效
[root@controller ~]# systemctl restart chronyd
[root@controller ~]# systemctl enable chronyd
(2)时间同步服务管理
时间同步由chronyc命令进行监控和管理。
功能说明 | 常用参数命令 |
---|---|
查看 ntp_servers信息,加-v将显示对数据的说明 | chronyc sources -v |
查看 ntp_servers 状态 | chronyc sourcestats -v |
查看 ntp_servers 是否在线 | chronyc activity -v |
查看 ntp 详细信息 | chronyc tracking -v |
强制同步下系统时钟 | chronyc -a makestep |
显示访问本服务器的客户端 | chronyc clients |
添加新的ntp服务器 | chronyc add server |
删除已有的ntp服务器 | chronyc delete |
# 查看当前客户端与NTP服务器连接情况(不加-v)
[root@controller ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 119.28.183.184 2 6 17 4 +4589us[ +17ms] +/- 45ms
^- ntp1.ams1.nl.leaseweb.net 2 6 375 5 +20ms[ +32ms] +/- 235ms
^+ 85.199.214.102 1 6 377 4 -17ms[-4919us] +/- 134ms
^- pingless.com 2 6 377 4 -15ms[ -15ms] +/- 132ms
# 查看当前客户端与NTP服务器连接情况(加-v)
[root@controller ~]# chronyc sources -v
210 Number of sources = 4
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 119.28.183.184 2 6 17 6 +4589us[ +17ms] +/- 45ms
^- ntp1.ams1.nl.leaseweb.net 2 6 375 7 +20ms[ +32ms] +/- 235ms
^+ 85.199.214.102 1 6 377 6 -17ms[-4919us] +/- 134ms
^- pingless.com 2 6 377 6 -15ms[ -15ms] +/- 132ms
# 查看 ntp服务器 是否在线
[root@controller ~]# chronyc activity
200 OK
4 sources online
0 sources offline
0 sources doing burst (return to online)
0 sources doing burst (return to offline)
0 sources with unknown address
# 添加腾讯NTP服务器
[root@controller ~]# chronyc add server time1.cloud.tencent.com
200 OK
# 删除腾讯的NTP服务器
[root@controller ~]# chronyc delete time1.cloud.tencent.com
200 OK
2、Openstack云计算平台框架
安装组件前,需要先将框架搭建起来。因此要安装由CentOS官方发布的Openstack云计算框架与客户端管理工具。
(1)安装Openstack框架和客户端
# 1.安装Openstack框架
# 模糊查询软件包名称
[root@controller ~]# yum list *-openstack-train
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Available Packages
centos-release-openstack-train.noarch 1-1.el7.centos extras
# 安装
[root@controller ~]# yum -y install centos-release-openstack-train
# 2.升级所有的软件包
# 自动检查所有可升级的软件包并升级
[root@controller ~]# yum upgrade -y
# 3.安装openstack客户端
[root@controller ~]# yum install -y python-openstackclient
# 4.查看openstack的版本号
[root@controller ~]# openstack --version
openstack 4.0.2
(2)禁用Centos的SElinux,安装openstack-selinux
selinux有三种工作模式:
强制模式(enforcing)————强制使用selinux的安全策略;
宽容模式(permissive)————不使用安全策略,只将相关信息写入日志;
禁用模式(disabled)————禁用selinux。
openstack-selinux:帮助openstack平台自动控制和管理selinux安全策略。
# 1.禁用Centos的SElinux
[root@controller ~]# vi /etc/selinux/config
...略
SELINUX=disabled 《————改为这样
...略
# 让修改配置生效
[root@controller ~]# setenforce 0
# 2.安装openstack-selinux
[root@controller ~]# yum install -y openstack-selinux
3、mariadb数据库
Mysql的创始人Michel Widenius主导开发完全兼容MYSQL、开源免费的MariaDB数据库。
MariaDB采用Maria存储引擎的MYSQL数据库的分支版本。
(1)安装mariadb
# mariadb-server:数据库后台服务
# python2-PyMySQL:python访问数据库的模块
[root@controller ~]# yum install -y mariadb-server python2-PyMySQL
(2)编辑数据库配置文件
配置文件是 /etc/my.cnf.d/
目录下所有后缀为 cnf
的文件。
配置文件中主要参数及功能:
参数 | 功能说明 |
---|---|
port | 数据库对外服务的端口号,默认为3306 |
datadir | 数据库文件存放目录 |
bind-address | 绑定远程访问地址,只允许从该地址访问数据库 |
default-storage-engine | 默认存储引擎,MariaDB支持几十种存储引擎,其中InnoDB是比较常用的支持事务的存储引擎 |
innodb_file_per_table | InnoDB引擎的独立表空间,让每个表的数据都单独保存 |
max_connections | 最大连接数 |
collation-server | 字符的排序规则,也称为排列字符集,每个字符集都对应一个或多个排列字符集 |
character-set-server | 字符集 |
[root@controller ~]# cd /etc/my.cnf.d/
[root@controller my.cnf.d]# ls
client.cnf mariadb-server.cnf
enable_encryption.preset mysql-clients.cnf
# 创建文件
[root@controller my.cnf.d]# touch openstack.cnf
# 写入信息
echo '[mysqld]
bind-address = 192.168.10.10
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8' > openstack.cnf
(3)启动mariadb
# 设置开机启动
[root@controller my.cnf.d]# systemctl enable mariadb
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
# 立即启动数据库
[root@controller my.cnf.d]# systemctl start mariadb
# 检查数据库启动情况
[root@controller my.cnf.d]# systemctl status mariadb
(4)初始化mariadb数据库
[root@controller ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): 《输入当前密码,没有则直接按【Enter】键
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y 《是否设置新密码
New password: 《输入新密码
Re-enter new password: 《确认新密码
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y 《是否去掉匿名用户
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y 《是否禁止root用户远程登录
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y 《是否去掉测试数据库
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y 《是否重新加载权限表
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
(5)登录和使用数据库
# 登录数据库
[root@controller ~]# mysql -h localhost -uroot -p000000
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.20-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
MariaDB [(none)]> use mysql;
MariaDB [mysql]> show tables;
MariaDB [mysql]> exit
Bye
4、RabbitMQ消息队列服务
消息队列(Message Queue,MQ)是一种应用间的通信方式,消息发送到消息队列后由消息队列来确保消息的可靠传递,即消息发布者和消息使用者之间并不产生直接关系。
OpenStack各个组件之间就是通过消息队列进行相互通信的。其中RabbitMQ是一个开源的、应用广泛的消息服务系统。
通常使用RabbitMQ为OpenStack提供消息队列服务。
(1)用户管理常用语法
RabbitMQ用户的用户名和密码由rabbitmqctl命令进行管理
新建RabbitMQ用户的命令如下:rabbitmqctl add_user <用户名> <密码>
删除RabbitMQ用户的命令如下:rabbitmqctl delete_user <用户名>
修改RabbitMQ用户密码的命令如下:rabbitmqctl change_password <用户名> <新密码>
(2)案例
# 1.安装RabbitMQ消息队列
[root@controller ~]# yum install -y rabbitmq-server
# 2.启动RabbitMQ消息队列
# 开机启动
[root@controller ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
# 立即启动
[root@controller ~]# systemctl start rabbitmq-server
# 3.设置用户和密码
# 创建一个名为“rabbitmq”的用户,密码为“RABBIT_PASS”
[root@controller ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"
# 修改openstack用户密码为000000
[root@controller ~]# rabbitmqctl change_password openstack 000000
Changing password for user "openstack"
# 4.管理用户权限
# 3个“.*”分别对应配置、写入、读取权。给openstack用户赋予对RabbitMQ所有资源的配置、写入与读取权限
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
# 查看用户的权限
[root@controller ~]# rabbitmqctl list_user_permissions openstack
Listing permissions for user "openstack"
/ .* .* .*
5、Memcached内存缓存服务
内存缓存(Memcached)是一个高性能的分布式内存对象缓存系统,能够存储各种格式的数据,包括图像、视频、文件,以及数据库检索的结果等
(1)安装memcached服务
# “memcached”是内存缓存服务软件,
# “python-memcached”是对该服务进行管理的接口程序软件
[root@controller ~]# yum install -y memcached python-memcached
# 安装完成后,系统将自动创建名为“memcached”的用户
[root@controller ~]# cat /etc/passwd | grep memcached
memcached:x:995:992:Memcached daemon:/run/memcached:/sbin/nologin
(2)配置内存缓存服务
Memcached的配置文件为/etc/sysconfig/memcached
。
[root@controller ~]# vi /etc/sysconfig/memcached
PORT="11211" # 服务端口
USER="memcached" # 用户名
MAXCONN="1024" # 允许的最大连接数
CACHESIZE="64" # 最大的缓存大小
OPTIONS="-l 127.0.0.1,::1,192.168.10.10" # 监听地址(默认监听本地)
(3)启动内存缓存服务
# 开机启动
[root@controller ~]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
# 立即启动
[root@controller ~]# systemctl start memcached
# 检查服务是否启动
[root@controller ~]# netstat -tnlup | grep memcached
tcp 0 0 192.168.10.10:11211 0.0.0.0:* LISTEN 3778/memcached
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 3778/memcached
tcp6 0 0 ::1:11211 :::* LISTEN 3778/memcached
6、etcd分布式键值对存储系统
etcd是一个开源项目,它的目标是构建一个高可用的分布式键-值(Key-Value)数据库用于配置共享和服务发现。
这个软件的作用类似于分布式系统中“/etc”目录的功能,即存储大规模分布式系统的配置信息。
(1)etcd配置参数
配置参数 | 说明 |
---|---|
ETCD_LISTEN_PEER_URLS | 用于监听其他etcd成员的地址,只能是IP地址,不能写域名 |
ETCD_LISTEN_CLIENT_URLS | 对外提供服务的地址,只能是IP地址,不能写域名 |
ETCD_NAME | 当前etcd成员的名字,成员必须有唯一名字,建议采用主机名 |
ETCD_INITIAL_ADVERTISE_PEER_URLS | 列出这个成员的伙伴地址,通告给集群中的其他成员 |
ETCD_ADVERTISE_CLIENT_URLS | 列出这个成员的客户端地址,通告给集群中的其他成员 |
ETCD_INITIAL_CLUSTER | 启动初始化集群配置,值为“成员名=该成员服务地址” |
ETCD_INITIAL_CLUSTER_TOKEN | 初始化etcd集群标识,用于多个etcd集群相互识别 |
ETCD_INITIAL_CLUSTER_STATE | 初始化集群状态(新建值为“new”,已存在值为“existing”)。如果这个选项被设置为existing,etcd将试图加入已有的集群 |
(2)安装配置
# 1.安装
[root@controller ~]# yum install -y etcd
# 2.备份配置文件
[root@controller ~]# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
# 修改配置
echo 'ETCD_LISTEN_PEER_URLS="http://192.168.10.10:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.10:2379,http://127.0.0.1:2379"
ETCD_NAME="controller"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.10:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.10:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.10.10:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
' > /etc/etcd/etcd.conf
# 3.启动服务
[root@controller ~]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@controller ~]# systemctl start etcd
# 4.检查运行
[root@controller ~]# netstat -tnlup| grep etcd
tcp 0 0 192.168.10.10:2379 0.0.0.0:* LISTEN 4319/etcd
tcp 0 0 127.0.0.1:2379 0.0.0.0:* LISTEN 4319/etcd
tcp 0 0 192.168.10.10:2380 0.0.0.0:* LISTEN 4319/etcd
(3)etcd服务管理
etcdctl是管理etcd服务的工具,利用它可以实现数据的存取。
[root@controller ~]# etcdctl set testkey 001
001
[root@controller ~]# etcdctl get testkey
001
[root@controller ~]# etcdctl set name kobe
kobe
[root@controller ~]# etcdctl get name
kobe
三、集群配置
现在已经有了一台符合条件的虚拟机作为控制节点,还需要准备一个计算节点。
1、计算节点克隆
第1步,在VMware Workstation主界面鼠标右键单击【我的计算机】下的虚拟机(虚拟机需处于关闭状态),在弹出的菜单中依次选择【管理】→【克隆】后出现【克隆虚拟机向导】
第2步,选择克隆源与克隆类型。在【克隆虚拟机向导】对话框中单击【下一页】按钮进入【克隆源】界面。在【克隆源】界面中选择【虚拟机中的当前状态】单选按钮,然后单击【下一步】按钮,弹出克隆类型】界面。在【克隆类型】界面中选择【创建完整克隆】单选按钮,然后单击【下一步】按钮,弹出【新虚拟机名称】界面。
第3步,设置新的虚拟机名称及存储位置,然后开始克隆虚拟机。在【新虚拟机名称】界面中的【虚拟机名称】和【位置】文本框内填写和选择新克隆的虚拟机的名称和虚拟机存储的位置,设置完成后单击【完成】按钮,显示【正在克隆虚拟机】对话框。
给这个计算节点添加一个40G的磁盘。
2、计算节点配置
# 修改网络配置
[root@controller ~]# cd /etc/sysconfig/network-scripts/
# 生产新的uuid
[root@controller network-scripts]# uuidgen >> ifcfg-ens33
[root@controller network-scripts]# uuidgen >> ifcfg-ens34
# 修改ifcfg-ens33配置
NAME=ens33
UUID=80d04405-642e-41f6-aa31-a33b79b92ca4 # 将新生成的uuid放这里替换
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.20 # 修改网卡地址
NETMASK=255.255.255.0
# 修改ifcfg-ens34配置
NAME=ens34
UUID=381db26e-7267-485c-a459-f4b56d0e5e42 # 将新生成的uuid放这里替换
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.20.20 # 修改网卡地址
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
DNS1=114.114.114.114
DNS2=8.8.8.8
# 重启网络
[root@controller network-scripts]# systemctl restart network
# 使用xshell等工具连接192.168.10.20,查看当前的网络信息:
[root@controller ~]# ip a
1: lo: 略
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:fc:73:40 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.20/24 brd 192.168.10.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::4883:d953:184d:971b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:fc:73:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.20.20/24 brd 192.168.20.255 scope global noprefixroute ens34
valid_lft forever preferred_lft forever
inet6 fe80::e991:bf85:171d:2a7a/64 scope link noprefixroute
valid_lft forever preferred_lft foreve
# 更改计算节点主机名
[root@controller ~]# hostnamectl set-hostname compute
[root@controller ~]# bash
[root@compute ~]#
3、配置域名解析和防火墙
为了提升工作效率,将主机名和ip地址绑定。
(1)域名解析配置
# 修改控制节点本地域名解析
[root@controller ~]# echo '192.168.10.20 compute' >> /etc/hosts
# 修改计算节点本地域名解析
[root@compute ~]# echo '192.168.10.20 compute' >> /etc/hosts
# 验证互PING
[root@controller ~]# ping compute
[root@compute ~]# ping controller
(2)selinux和防火墙关闭
安装openstack之前需要关闭linux系统自带的selinux和firewall防火墙,避免因防火墙设置问题造成服务访问出现问题。
# 1.控制、计算节点都修改/etc/selinux/config,将"SELINUX=enforcing" 改为 "SELINUX=disabled"
# 2.禁止开机启动和关闭防火墙
# 控制节点:
[root@controller ~]# systemctl disable firewalld
[root@controller ~]# systemctl stop firewalld
# 计算节点:
[root@compute ~]# systemctl disable firewalld
[root@compute ~]# systemctl stop firewalld
4、搭建本地软件仓库
不能访问外网的环境,需要搭建本地的YUM源。
没必要在每台机器上都配置同样的软件仓库,可以选择共享的方式为其他主机提供服务。
案例:在控制节点配置YUM源,并搭建文件传输服务器为其他的计算节点提供服务。
(1)在控制节点配置YUM源
添加base、extras、updates、train、virt这5个软件仓库的本地地址——挂载镜像的地址。
name是软件仓库名、baseurl是仓库地址、enable设置1为启用该软件仓库、gpgcheck设置为0为取消数字签名验证。
file:///
表示链接到本地文件系统的地址。
# 1.上传openStack-train.iso文件到/opt目录下
[root@controller opt]# du -sh *
0 mydriver
16G openStack-train.iso
# 2.将镜像文件挂载到文件夹中,即可访问镜像文件内容
[root@controller opt]# mkdir openstack
[root@controller opt]# ls
mydriver openstack openStack-train.iso
# 挂载命令:将镜像文件挂载到/opt/openstack
[root@controller opt]# mount openStack-train.iso openstack/
mount: /dev/loop0 is write-protected, mounting read-only
[root@controller opt]# df -H
...略
/dev/loop0 17G 17G 0 100% /opt/openstack
# 3.备份原有的yum的配置文件
[root@controller openstack]# cd /etc/yum.repos.d/
[root@controller yum.repos.d]# ls
CentOS-Base.repo CentOS-OpenStack-train.repo repo.bak
# 将阿里源改名,避免覆盖官方源备份
[root@controller yum.repos.d]# mv CentOS-Base.repo CentOS-ALIBABA-Base.repo
# 移动repo文件到备份目录
[root@controller yum.repos.d]# mv *.repo repo.bak/
# 4.编写本地YUM源文件,指向本地文件
[root@controller yum.repos.d]# vi OpenStack.repo
[base]
name=base
baseurl=file:///opt/openstack/base/
enable=1
gpgcheck=0
[extras]
name=extras
baseurl=file:///opt/openstack/extras/
enable=1
gpgcheck=0
[updates]
name=updates
baseurl=file:///opt/openstack/updates/
enable=1
gpgcheck=0
[train]
name=train
baseurl=file:///opt/openstack/train/
enable=1
gpgcheck=0
[virt]
name=virt
baseurl=file:///opt/openstack/virt/
enable=1
gpgcheck=0
# 5.清除原有的YUM源缓存并重建缓存
[root@controller ~]# yum clean all
# 重建缓存
[root@controller ~]# yum makecache
# 检查yum源
[root@controller ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base base 10,039
extras extras 500
train train 3,168
updates updates 3,182
virt virt 63
repolist: 16,952
# 长期挂载,避免重启丢失
[root@controller ~]# vi /etc/fstab
# 在最后添加如下内容
/opt/openStack-train.iso /opt/openstack/ iso9660 defaults,loop 0 0
(2)控制节点配置FTP服务器
控制节点上已经有了本地YUM源文件,搭建一个FTP服务器,共享软件仓库为计算节点提供服务。
# 1.安装FTP服务
[root@controller ~]# yum install -y vsftpd
# 2.配置FTP主目录为软件仓库目录:添加如下信息
[root@controller ~]# echo 'anon_root=/opt' >> /etc/vsftpd/vsftpd.conf
# 3.启动FTP服务
[root@controller ~]# systemctl start vsftpd
[root@controller ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
(3)计算节点配置YUM源
修改yum配置文件,将YUM源指向控制节点FTP服务器的软件仓库。
# 1.备份YUM配置