Openstack学习笔记(二):基础配置

基础服务配置

基础服务配置主要分为以下几步:

  • 网络配置
  • 配置yum源
  • 配置主机名
  • SELINUX配置
  • NTP配置
  • 安装openstack基础包
  • 配置数据库服务
  • 配置消息服务器
  • 配置http服务

网络配置

  • openstack版本:openstack-liberty
  • 系统配置如下:

编辑网卡的配置文件,按照表给四张网卡分配对应的IP,如图所示,修改/etc/sysconfig/network-scripts/ifcfg-ens网卡文件,修改第2行为none;表示不启用dhcp,修改第17行为yes,表示启用网卡;19-21行表示设置网卡的IP、网关、子网掩码为指定配置。另外的3张网卡也进行相同的配置。

配置yum源

yum源的配置可以参考学习笔记的上一篇,主要步骤如下:

  • 上传包到指定目录
    可以通过一些工具如secureFX等上传,controller上传到/var/ftp目录下
  • 备份repo文件并新建repo文件如下
    [root@controller ~]# cd /etc/yum.repos.d/
    [root@controller yum.repos.d]# rename .repo .repo.bak *
    [root@controller yum.repos.d]# vi local.repo

因为172.23.0.211启动了ftp服务,所以compute文件则需将file:///var/ftp/替换成ftp://172.23.0.211即可。

  • 验证
    如图所示,显示repo文件已经配置好。


配置主机名

编辑/etc/hostname文件,分配设置配置控制节点和计算节点的主机名称,之后可以通过重启或者执行以下命令设置主机名称。

    hostname controller

编辑/etc/hosts文件,设置IP地址和主机名称的映射关系,在文件末尾加上两端:

    172.23.0.211 controller
    172.23.0.212 compute

加上后文件内容如下:



进行配置验证:

SELinux设置

在安装过程中,首先要关闭CentOS操作系统中的SELinux。SELinux是强制访问控制(MAC)系统的实现,其本身是一个功能强大的安全模块。由于基于SELinux的访问控制繁冗复杂,所以建议在测试环境中将其关闭,以免造成未知错误。服务器上的SELinux会拦截一些命令,导致操作失败,因此启动前需要对SELinux进行设置。

  • 执行以下命令编辑SELinux的配置文件
    [root@controller ~]# vi /etc/selinux/config
    将第6行的“SELINUX=enforcing”这一行中的“enforcing”改为“permissive”,然后保存修改并退出文件编辑状态。
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    # enforcing - SELinux security policy is enforced.
    # permissive - SELinux prints warnings instead of enforcing.
    # disabled - No SELinux policy is loaded.
    SELINUX=permissive#这里将enforcing修改为permissive
    # SELINUXTYPE= can take one of three two values:
    # targeted - Targeted processes are protected,
    # minimum - Modification of targeted policy. Only selected processes are protected.
    # mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    一般情况下,用户需要重启主机才可以使此修改生效,但也可以通过执行命令
    [root@controller ~]# setenforce permissive
    使其即时生效。如果只执行以上命令,在主机重启后,SElinux的状态仍会回到“enforcing”,因此要将以上两步都做完才能保证完全修改。检查Selinux现在的状态,如下:
    [root@controller ~]# sestatus
    SELinux status: enabled
    SELinuxfs mount: /sys/fs/selinux
    SELinux root directory: /etc/selinux
    Loaded policy name: targeted
    Current mode: permissive
    Mode from config file: permissive
    Policy MLS status: enabled
    Policy deny_unknown status: allowed
    Max kernel policy version: 28

配置NTP服务

控制节点会通过各种协议与受控节点通讯,为了确保安全,受控节点接到命令后会进行一系列的校验,如果两机的时间不同步的话,会导致命令拒绝执行。NTP服务用于保证整套系统内所有主机的时间一致。因为OpenStack控制节点会判断一个任务的超时时间,如果主机之间的时间差过大,会造成系统运行失败和报错,所以OpenStack系统中的主机都需要配置NTP服务,在centos7里面常用chrony来做ntp服务,主要步骤如下:

  • 安装chrony
  • 启动服务并设置开机自启动
  • 修改配置文件
  • 配置验证

控制节点

在控制节点下运行以下命令安装chrony服务,启动并设置开机自启动,然后编辑/etc/chrony.conf文件
yum install chrony
systemctl restart chronyd.service
systemctl enable chronyd.service
vi /etc/chrony.conf
由于虚拟机不能连接公网,需要设置同步本地时间,需要对如图中3个地方进行修改:

  • 注释掉原有的服务,并加上本地服务IP
  • 设置允许172.23.0.0段IP同步
  • 设置本地网层级为10
controller配置详情
controller验证结果

计算节点

计算节点主要配置步骤与控制节点类似,操作有所不同

  • 安装chrony
  • 启动服务并设置开机自启动
  • 修改配置文件
  • 配置验证
    计算节点只需要在配置文件注释掉原有的同步服务并添加本地服务即可,修改后配置文件如下:
compute配置详情

验证配置结果,配置成功:

compute验证结果

安装OpenStack基础包

这里包含openstack-utils和openstack-selinux两个包,其中utils包能够让openstack安装更加简单,selinux包含SELinux的策略文件,不安装这两个包可能会在后续安装步骤报错,分别在控制节点和计算节点执行以下命令即可:

    yum install openstack-utils openstack-selinux -y
安装成功

配置数据库服务

OpenStack内部组件交互需要MySQL数据库的支持,需要在控制节点安装MySQL服务并进行相应的配置。在控制节点执行命令安装mysql,并设置自启动:

    [root@controller ~]# yum install -y mysql mysql-server MySQL-python
    [root@controller ~]# systemctl restart mariadb
    [root@controller ~]# systemctl enable mariadb
安装完成

可以注意到,启动mysql服务的是通过启动mariadb这个服务而不是centos6的mysqld,这是因为CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了,所以执行的yum命令安装了mariadb-server,而没有安装mysql-server。
mariadb是mysql的一个分支,在许多操作上与mysql完全相同,在一定程度上可以完全替代mysql,这里就使用mariadb进行安装。之后执行以下命令对数据库进行基本配置:

最后修改配置文件/etc/my.cnf如图所示,保证openstack和mysql的正常运行:

/etc/my.cnf

配置成功后,输入用户名密码即可登录,数据库服务配置成功。


验证配置

配置消息服务器

消息传递在日常的工作生活中是一个必不可少的需求,在大型软件中也是在内部信息交换和外部信息传递都是不可或少。在系统间通信窗体的最基本方法是socket,但是这是一个最底层,所以在使用起来需要程序来调用使用,这里使用rabbitmq。

  • 安装
    [root@controller images]# yum install rabbitmq-server -y

  • 启动服务并设置开机自启动
    [root@controller images]# systemctl start rabbitmq-server
    [root@controller images]# systemctl enable rabbitmq-server

  • 增加用户并配置权限
    [root@controller images]# rabbitmqctl add_user openstack 000000
    [root@controller images]# rabbitmqctl set_permissions openstack "." "." ".*"

配置http服务

  • 安装httpd,并在配置文件加上一行
    [root@controller ~]# yum install httpd
    [root@controller ~]# vi /etc/httpd/conf/httpd.conf
    ServerName 172.23.0.211:80
  • 启动服务并设置自启动
启动服务并设置自启动
  • 登录172.23.0.211进行验证,能够看到测试界面

存在问题

  • 当执行yum install -y mysql mysql-server MySQL-python命令后实际上安装的是mariadb,所以如果按照指引执行命令systemctl restart mysqld则会出现如下提示:

这里可以直接使用mariadb,如果一定要使用mysql的话,需要去官网下载rpm包来进行安装。

  • 与教程不一致的是,在配置数据库服务,修改配置文件my.cnf的时候,要注意log-error的地址需要改到mariadb.log的地址,否则按照教程会导致无法重启mariadb服务。

推荐阅读更多精彩内容