OpenStack-T版——手动搭建OpenStack底层环境(rabbitmq、mariadb、memcache、Apache))+实验!

一、部署资源环境

在这里插入图片描述

二、搭建思路

1.配置操作系统

2.配置OpenStack运行环境

3.配置OpenStack平台基础服务(rabbitmq,mariadb,memcache,Apache)

三、搭建过程

1. 部署流程

1. 最小化虚拟机

3台节点同步设置

修改为eth0网卡
在安装页面开始时,按tab键输入net.ifnames=0 biosdevname=0,直接回车
在这里插入图片描述
默认选择最小化安装
在这里插入图片描述
以下和之前一样正常安装

2. 设置网卡

3台同步

安装成功后
切换到root用户,查看网卡是否修改成功为eth0
在这里插入图片描述

vi /etc/sysconfig/network-scripts/ifcfg-eth0

在这里插入图片描述

vi /etc/sysconfig/network-scripts/ifcfg-eth1

在这里插入图片描述
重启网卡

systemctl restart network	
ip addr

在这里插入图片描述

3. 设置免交互

面向3台节点

1.关闭防火墙

systemctl stop firewalld
setenforce 0
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.免交互

vi /etc/hosts  #三台主机都要添加
192.168.1.10 ct
192.168.1.20 c1
192.168.1.30 c2

[root@ct ~]# ssh-keygen -t rsa   生成密钥
[root@ct ~]# ssh-copy-id ct  公钥传递
[root@ct ~]# ssh-copy-id c1
[root@ct ~]# ssh-copy-id c2

在这里插入图片描述
3.测试是否可远程登录

[root@ct ~]# ssh root@c1
Last login: Thu Feb 18 21:50:49 2021 from ct
[root@c1 ~]# exit
登出
Connection to c1 closed.
[root@ct ~]# ssh root@c2
Last login: Thu Feb 18 21:51:13 2021 from c1
[root@c2 ~]# exit
登出
Connection to c2 closed.

4.安装基础环境依赖包

yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 lrzsz
  • net-tools:最小化安装
  • bash-completion:自动补全
  • pcre:正则表达式
  • pcre-devel:正则表达式的库
  • expat-devel:C语言的开发库
  • lrzsz: 上传和下载的工具
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
  • centos-release-openstack-train:t版的环境
  • python-openstackclient:openstack的python客户端
  • openstack-selinux:openstack核心安全防护
  • openstack-utils:openstack的utils工具

注:以上安装操作可以多安装几次,避免对后期的rabbitmq部署配置引发问题

4. 设置时间同步

1.安装同步软件

[root@ct ~]# yum -y install chrony

2.在控制节点上设置为同步源

[root@ct ~]# vi /etc/chrony.conf 
添加修改
server ntp.aliyun.com iburst  设置为时间同步源
allow 192.168.1.0/24192.168.1网段提供时间同步

在这里插入图片描述

[root@ct ~]# systemctl restart chronyd
[root@ct ~]# systemctl enable chronyd
[root@ct ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    17    30  +1810us[+4891us] +/-   23ms

在计算节点1.2上

[root@c1 ~]# vi /etc/chrony.conf 
添加
server controller iburst 设置时间同步源为控制节点
[root@compute01 ~]# systemctl restart chronyd
[root@compute01 ~]# systemctl enable chronyd
[root@compute01 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ct                            3   6    17     6  -2716ns[  -21us] +/-   23ms
控制时间同步后台进程去搜索关联同步的时间服务器信息

iburst可以直接同步一个大的时间跨度
例如:
刚创建一个虚拟机
时间设置为 20208月可以使用iburst直接立刻同步到现在时间20211月

不使用iburst,它会以缓慢方式向标准时间进行靠拢

在这里插入图片描述

5. 设置任务计划

面向3台节点

[root@ct ~]# crontab -e
*/30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log
分钟小时日期月星期                      追加  日志文件
[root@ct ~]# date     查看当前时间
20210217日 星期三 22:32:10 CST

时间间隔设置不要太小,尽量拉长,因为频次太快,导致日志量越来越大,存储空间受影响

6. 安装配置MariaDB

在ct控制节点上

python2-PyMySQL包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端

[root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL

mariadb-server :mariadb服务器

[root@ct ~]# yum -y install libibverbs 底层库文件

设置mysql配置文件

[root@ct ~]# vi /etc/my.cnf.d/openstack.cnf
添加
[mysqld]
bind-address=192.168.1.10   控制节点局域网地址(绑定内网地址)本地数据库节点ip  
default-storage-engine=innodb 默认存储引擎
innodb_file_per_table=on      每张表独立表空间文件(文件存储空间)
max_connections=4096          最大连接数
collation-server=utf8_general_ci  默认字符集(不区分大小写)
character-set-server=utf8          字符集utf8_bin区分大小写
[root@ct ~]# systemctl enable mariadb  自启动数据库
[root@ct ~]# systemctl start mariadb   开启数据库服务
[root@ct ~]# mysql_secure_installation   数据库初始化设置
[root@ct ~]# mysql -uroot -p123456    测试登录数据库

在这里插入图片描述

7. 安装RabbitMQ(消息队列)

所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq

1.安装软件

[root@ct ~]# yum -y install rabbitmq-server
[root@ct ~]# 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@ct ~]# systemctl start rabbitmq-server     开启服务

这边自启动的时候会经常报错,报错解决方案
1.检查之前安装的软件环境是否安装成功
2.重新安装完成软件环境,要先杀死rabbitmq的所有进程

kill -9 $(ps -ef|grep rabbitmq|grep -v grep|awk '{print $2}')

2.创建消息队列用户,用于controler和node节点连接rabbitmq的认证

[root@ct ~]#  rabbitmqctl add_user openstack RABBIT_PASS
                                                      用户名                密码
Creating user "openstack"
因为rabbitmq跑在openstack平台里,作为数据交互和传递的载体时,因为需要被keystone认证,有用户身份来进行管理,便于认证

3.配置openstack用户的操作权限(正则,配置读写权限)

[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

4.授予独立的用户身份,读写权限

[root@ct ~]# netstat -anptu | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      9369/beam.smp        
tcp        0       0 0.0.0.0:15672        0.0.0.0:*            LISTEN     9369/beam.smp                   
tcp6       0      0 :::5672                 :::*                    LISTEN      9369/beam.smp  

可查看256725672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口)

5.查看rabbitmq插件列表

[root@ct ~]# rabbitmq-plugins list
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@ct
 |/
[  ] amqp_client                       3.6.16
[  ] cowboy                            1.0.4
[  ] cowlib                            1.0.2
[  ] rabbitmq_amqp1_0                  3.6.16
[  ] rabbitmq_auth_backend_ldap        3.6.16
[  ] rabbitmq_auth_mechanism_ssl       3.6.16
[  ] rabbitmq_consistent_hash_exchange 3.6.16
[  ] rabbitmq_event_exchange           3.6.16
[  ] rabbitmq_federation               3.6.16
[  ] rabbitmq_federation_management    3.6.16
[  ] rabbitmq_jms_topic_exchange       3.6.16
[  ] rabbitmq_management               3.6.16
[  ] rabbitmq_management_agent         3.6.16
[  ] rabbitmq_management_visualiser    3.6.16
[  ] rabbitmq_mqtt                     3.6.16
[  ] rabbitmq_random_exchange          3.6.16
[  ] rabbitmq_recent_history_exchange  3.6.16
[  ] rabbitmq_sharding                 3.6.16
[  ] rabbitmq_shovel                   3.6.16
[  ] rabbitmq_shovel_management        3.6.16
[  ] rabbitmq_stomp                    3.6.16
[  ] rabbitmq_top                      3.6.16
[  ] rabbitmq_tracing                  3.6.16
[  ] rabbitmq_trust_store              3.6.16
[  ] rabbitmq_web_dispatch             3.6.16
[  ] rabbitmq_web_mqtt                 3.6.16
[  ] rabbitmq_web_mqtt_examples        3.6.16
[  ] rabbitmq_web_stomp                3.6.16
[  ] rabbitmq_web_stomp_examples       3.6.16
[  ] sockjs                            0.3.4

6.开启rabbitmq的web管理界面的插件,端口为15672(可以通过网页访问,图形化页面)

[root@ct ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@ct... started 6 plugins.

7.查看端口是否开启

[root@ct ~]# netstat -anptu | grep 5672   
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      387/beam.smp        
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      387/beam.smp        
tcp        0      0 192.168.1.10:55973         192.168.1.10:25672         TIME_WAIT   -                   
tcp        0      0 192.168.1.10:60816         192.168.1.10:25672         TIME_WAIT   -                   
tcp6       0      0 :::5672                 :::*                    LISTEN      387/beam.smp 

8. 访问OpenStack图形化页面

http://192.168.1.10:15672/
默认账号密码都为guest
在这里插入图片描述
在这里插入图片描述

9. 安装memcached

9.1 为什么要安装memcache?

安装memcached是用来存储session(会话)信息;服务身份验证机制(keystone)使用memched来缓存令牌,在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中

9.2 介绍一下memcache

Memcached是一个自由开源的, 高性能,分布式内存对象缓存系统。

Memcached是以LiveJourmal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、
 Facebook. Vox、 LiveJournal等众多服务中提高Web应用扩展性的重要因素

Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果

Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。

本质上,它是一个简洁的key-value存储系统。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

并且在BAT里,redis已经逐渐取代了memcached,成为分布式场景广泛使用的缓存方案

9.3 安装memcached

[root@ct ~]# yum -y install memcached python-memcached

2.python模块在OpenStack中起到了连接数据库的作用,修改memcached配置文件

[root@ct ~]# vi /etc/sysconfig/memcached 

PORT="11211"     默认端口号
USER="memcached"  默认账户名
MAXCONN="1024"    最大连接数
CACHESIZE="64"    缓存大小
OPTIONS="-l 127.0.0.1,::1,ct"  
选项                      添加主机名,控制节点所在

10. 安装etcd

10.1 etcd特点

简单: 基于HTTP+JSON的API让你可以用CURL命令就可以轻松使用。

安全: 可以选择SSL客户认证机制。

快速: 每个实例每秒支持一千次写操作。

可信: 使用Ralf算法充分实现了分布式。

1.安装etcd

[root@ct ~]# yum -y install etcd

2.修改etcd.conf配置文件

[root@controller ~]# cd /etc/etcd/
[root@controller etcd]# ls -lh
[root@controller etcd]# vi etcd.conf 

修改

ETCD_LISTEN_PEER_URLS="http://192.168.1.10:2380" 
监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)

ETCD_LISTEN_CLIENT_URLS="http://192.168.1.10:2379"
对外提供服务的地址(2379端口,集群内部的通讯端口)

ETCD_NAME="controller"
集群中节点标识(名称)

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.10:2380"
该节点成员的URL地址,2380端口:用于集群之间通讯。

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.10:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.1.10:2380"

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"   集群唯一标识,群集名称

ETCD_INITIAL_CLUSTER_STATE="new"
初始集群状态,new为静态,表示单个节点
若为existing,则表示此ETCD服务将尝试加入已有的集群,初始化完成后,会根据自己的集群名称自动寻找其它相同集群名称的ETCD
若为DNS,则表示此集群将作为被加入的对象,等待加入状态

在这里插入图片描述
在这里插入图片描述

3.设置开机自启动etcd、查看状态

[root@ct etcd]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@ct etcd]# systemctl start etcd
[root@ct etcd]# systemctl status etcd
● etcd.service - Etcd Server
   Loaded: loaded (/usr/lib/systemd/system/etcd.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2021-02-17 23:47:45 CST; 9s ago
 Main PID: 32813 (etcd)
   CGroup: /system.slice/etcd.service
           └─32813 /usr/bin/etcd --name=controller --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://192.168.1.10...

217 23:47:45 ct etcd[32813]: 5be5d791bc731f64 received MsgVoteResp from 5be5d791bc731f64 at term 2
217 23:47:45 ct etcd[32813]: 5be5d791bc731f64 became leader at term 2
217 23:47:45 ct etcd[32813]: raft.node: 5be5d791bc731f64 elected leader 5be5d791bc731f64 at term 2
217 23:47:45 ct etcd[32813]: setting up the initial cluster version to 3.3
217 23:47:45 ct etcd[32813]: set the initial cluster version to 3.3
217 23:47:45 ct etcd[32813]: enabled capabilities for version 3.3
217 23:47:45 ct etcd[32813]: published {
    
    Name:controller ClientURLs:[http://192.168.1.10:2379]} to cluster b794a8a3d0704d54
217 23:47:45 ct etcd[32813]: ready to serve client requests
217 23:47:45 ct etcd[32813]: serving insecure client requests on 192.168.1.10:2379, this is strongly discouraged!
217 23:47:45 ct systemd[1]: Started Etcd Server.

4.查看端口

[root@ct etcd]# netstat -anpt | grep 2379
tcp        0      0 192.168.1.10:2379       0.0.0.0:*               LISTEN      32813/etcd          
tcp        0      0 192.168.1.10:2379       192.168.1.10:50094      ESTABLISHED 32813/etcd          
tcp        0      0 192.168.1.10:50094      192.168.1.10:2379       ESTABLISHED 32813/etcd          
[root@ct etcd]# netstat -anpt | grep 2380
tcp        0      0 192.168.1.10:2380       0.0.0.0:*               LISTEN      32813/etcd   

猜你喜欢

转载自blog.csdn.net/F2001523/article/details/113962044