openstack“T版“基础环境部署
- 部署
- 环境
- 思路
- 基础设置
- 步骤
- 关闭防火墙
- 免交互
- 基础环境依赖包
- 时间同步
- 安装MariaDB
- 安装RabbitMQ
- 安装memcached
- 安装etcd
部署
环境
控制节点ct
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:30G+300G(CEPH块存储)
双网卡:VM1-(局域网)192.168.66.11 NAT-20.0.0.11
操作系统:Centos 7.6(1810)-最小化安装
2、计算节点c1
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:30G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.66.12 NAT-20.0.0.12
操作系统:Centos 7.6(1810)-最小化安装
3、计算节点c2
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:30G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.66.13 NAT-20.0.0.13
操作系统:Centos 7.6(1810)-最小化安装
PS:最小内存6G
思路
配置操作系统+OpenStack运行环境
配置OpenStack平台基础服务:rabbitmq(各个组件之间传递信息,消息队列),mariadb,memcache(身份验证存储令牌,数据库),Apache
ps:
各个组件之间的交互是通过“消息队列”来实现的,就是使用RabbitMQ。其中,有这样几个角色:producer, consumer, exchange, queue,producer是消息发送者,consumer是消息接受者,中间要通过exchange和queue。producer将消息发送给exchange,exchange决定消息的路由,即决定要将消息发送给哪个queue,然后consumer从queue中取出消息,进行处理,消息发出,资源正被占用,这时,需要等待到资源占用释放,才可以进行任务。如一直等待,直到资源被释放,才执行任务,叫同步调用,如将任务排列在这等待,自己继续进行其他任务,叫异步调用。
基础设置
安装CentOS7.6,开启虚拟化
在安装过程中:
选择Install CentOS 7,按tab键,输入命令net.ifnames=0 biosdevname=0 ,安装目标位置,选择30G。最小化安装。
安装完成设置网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.66.11
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=static
ONBOOT=yes
IPADDR=20.0.0.11
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
DNS1=20.0.0.2
DNS2=8.8.8.8
systemctl restart network
能ping通能上网。其他两台机差不多步骤。
步骤
关闭防火墙
systemctl stop firewalld
setenforce 0
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
设置映射(内部网址),都要
vi /etc/hosts #添加
192.168.66.11 ct
192.168.66.12 c1
192.168.66.13 c2
免交互
三台节点做免交互
ssh-keygen -t rsa
ssh-copy-id ct
ssh-copy-id c1
ssh-copy-id c2
基础环境依赖包
yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre pcre-devel expat-devel cmake bzip2
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
net-tools 可以使用ifconfig命令
bash-completion 自动补全
pcre 正则 devel库
expat-devel:Apache依赖包,C语言开发,解析XML文档的开发库
centos-release-openstack-train 保证安装更新
openstack版本为最新版本t版
python-openstackclient openstack的python客户端因为openstack中的API大多数是python编写的,并且连接数据库,也需要python
openstack-selinux openstack核心安全防护
openstack-utils openstack其它util工具
多装几次,避免漏装对后期rabbitmq部署配置引发问题
时间同步
yum -y install chrony
vi /etc/chrony.conf
前面的server注释掉
server ntp.aliyun.com iburst #设置为时间同步源
allow 192.168.66.0/24 #为192.168.66.0网段提供时间同步
systemctl restart chronyd
systemctl enable chronyd
chronyc sources #更新
ps:
iburst可以直接同步一个大的时间跨度
例如:刚创建一个虚拟机,时间设置为 2020年8月可以使用iburst直接立刻同步到现在时间2021年1月
不使用iburst,会以缓慢方式向标准时间进行靠拢
在生产环境里面,要看需求情况使用这个参数
(闰年,多一天,少一天,直接同步会产生影响)
节点上
vi /etc/chrony.conf
server ct iburst #设置时间同步源为控制节点
systemctl restart chronyd
systemctl enable chronyd
chronyc sources
设置周期性任务
crontab -e
*/30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log
安装MariaDB
以下在控制节点安装即可
yum -y install mariadb mariadb-server python2-PyMySQL
yum -y install libibverbs
设置mysql配置文件
vi /etc/my.cnf.d/openstack.cnf #添加
[mysqld]
bind-address=192.168.66.11 #控制节点局域网地址(绑定内网地址)
default-storage-engine=innodb #默认存储引擎
innodb_file_per_table=on #每张表独立表空间文件(文件存储空间)
max_connections=4096 #最大连接数
collation-server=utf8_general_ci #默认字符集(不区分大小写)
character-set-server=utf8 #字符集utf8_bin区分大小写
systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation
Enter current password for root (enter for none): #回车
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] N
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
mysql -uroot -p123123
安装RabbitMQ
yum -y install rabbitmq-server
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
创建消息队列用户,用于controler和node节点连接rabbitmq的认证
rabbitmqctl add_user openstack RABBIT_PASS
配置openstack用户的操作权限(正则,配置读写权限)
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
查看rabbitmq插件列表
rabbitmq-plugins list
开启rabbitmq的web管理界面的插件,端口为15672(可以通过网页访问,图形化页面)
rabbitmq-plugins enable rabbitmq_management
netstat -anptu | grep 5672
访问http://192.168.66.11:15672,默认账号密码都为guest
安装memcached
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,成为分布式场景广泛使用的缓存方案。
安装memcached是用来存储session信息;服务身份验证机制使用memched来缓存令牌,在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中
yum -y install memcached python-memcached
修改memcached配置文件
vi /etc/sysconfig/memcached
PORT="11211" #默认端口号
USER="memcached" #默认账户名
MAXCONN="1024" #最大连接数
CACHESIZE="64" #缓存大小
OPTIONS="-l 127.0.0.1,::1,ct" #添加主机名
systemctl enable memcached
systemctl start memcached
netstat -anptu | grep 11211
安装etcd
优势:
简单: 基于HTTP+JSON的API让你可以用CURL命令就可以轻松使用。
安全: 可以选择SSL客户认证机制。
快速: 每个实例每秒支持一千次写操作。
可信: 使用Ralf算法充分实现了分布式。
应用场景:
服务发现
消息发布和订阅
负载均衡
分布式通知与协调
分布式锁
分布式队列
集群监控与Leader竞选
yum -y install etcd
修改配置文件
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.66.11:2380" # 5
ETCD_LISTEN_CLIENT_URLS="http://192.168.66.11:2379" # 6
ETCD_NAME="ct" # 9
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.66.11:2380" # 20
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.66.11:2379" # 21
ETCD_INITIAL_CLUSTER="ct=http://192.168.66.11:2380" # 26
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" # 27
ETCD_INITIAL_CLUSTER_STATE="new" # 28
systemctl enable etcd
systemctl start etcd
systemctl status etcd
netstat -anptu | grep 2379
netstat -anutp |grep 2380
基础配置完成