本文需要的yum点我提前下载
本文需要的官网文档点我提前下载
- controller(控制节点):内存3G,cpu开启虚拟化, ip:10.0.0.11
- compute1(计算节点): 内存1G,cpu开启虚拟化(必开),ip:10.0.0.31
控制节点只有一个,所以配置要给大些,计算节点可以有多个,但是虚拟化一定要开启,将上一节的模板机克隆出来,然后自行修改配置的大小,内存和虚拟化一定要注意,怎么修改点我看上文,这个配置最低要求就是上面写的那样。所以你的电脑至少要有8G内存才行,看看我的controller的设置:
再看看compute1的设置
compute1的虚拟化一定要打开,全都配置好再开机,然后ip地址需要进入要网卡配置文件处修改。下面是controller的网卡配置文件,这个是默认的不需要修改就可以直接用xshell连接,上一节模板机就是这个地址
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.11
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=114.114.114.114
现在是comput01的网卡修改,这个需要在vm里面修改好了重启网卡才能用xshell连接,因为原来的模板机地址是10.0.0.11,而克隆的地址也是这个所以ip地址会冲突,xshell无法连接,要把compute1的地址改好了才能连接:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改内容如下:
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.31
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=114.114.114.114
之后重启网卡配置:
systemctl restart network
然后查看地址直接用xshell连接即可,接着修改虚拟机的主机名,这里把xshell的选项卡名字也改好,不然容易出错,修改主机名字的命令:
hostnamectl set-hostname controller
exit
hostnamectl set-hostname compute1
exit
各主机分开执行,执行完之后分别按退出然后在xshell里面按Ctrl+shift+R就可以重新连接,然后发现主机名称已经改好了。注意这里的主机名一定要改对,不要自己想改什么就改什么,因为后续有些服务不写地址,写的都是主机名称,而两台主机相互之间要ping通才可以。
现在分别修改hosts文件,修改hosts命令是一样的:
vim /etc/hosts
然而两边的配置文件却不相同,controller的内容是:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.31 compute1
10.0.0.11 controller
在compute1这边是:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.11 controller
10.0.0.31 compute1
改好之后测试方法就是在分别在两边直接ping对方的主机名,如果ping不通那就绝对是你的名城名没有修改正确。
现在配置OpenStack的yum源,先上传上来,然后解压,
mount /dev/cdrom /mnt
cd /opt
rz
输入完rz之后就上传OpenStack的yum源,点击下载之后就上传吧,这里我们输入命令可以点击xshell最上面的查看--撰写--撰写栏开启,然后最下面选择发送文本到当前xshell的全部回话
这样无论输入了什么两边都会正常显示,不用去写两遍。这里上传的文件就是OpenStack的yum源,每个版本都不一样,传完之后检查大小,一定要注意路径
开始解压,并创建yum源
tar xf openstack_rpm.tar.gz
echo '[local]
name=local
baseurl=file:///mnt
gpgcheck=0
[openstack]
name=openstack
baseurl=file:///opt/repo
gpgcheck=0' >/etc/yum.repos.d/local.repo
yum makecache
yum repolist
结果应该跟我一样:
我们虽然把本地yum挂载好了但是每次开机并不会为我们自动挂载,我们需要把自动挂载写进去,同时还要赋予执行权限:
echo 'mount /dev/cdrom /mnt' >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
赋予权限是因为在/etc/rc.local文件里面说了要赋予执行权限:
现在起每一步操作都可以看着官网文档,这样以后不管装什么版本都可以去照着官方文档走了,官方文档在文章的一开始也说了怎么下载。
控制节点:
vim /etc/chrony.conf
修改26行:allow 10/24
systemctl restart chronyd
官网说要修改一个上游的ntp地址,这里不需要设置,因为默认是和centos的官方同步的,只需要修改第26行需要同步的网段即可,配置内容如下:
之后再保存重启即可。之前allow没有开启的时候是客户端,现在是服务端,查看端口就能看到123端口是存活的:
netstat -luntp
修改好之后如下图所示
计算节点:
刚才的控制节点是服务器端,那么计算节点就是客户端,所以计算节点需要修改的地方就是最前面而不是allow那里,修改内容为:
vim /etc/chrony.conf
修改第3行为
server 10.0.0.11 iburst
systemctl restart chronyd
修改之后为:
最后验证就是同时输入date,返回的结果一样就行了。
这里决定了你要装的OpenStack版本。有A、B、C、D以此类推,现在企业用的最多的就是M版本。最新版有Q、O、P等等,最开始的ABC三个版本都是编译安装,装一个月才能装好,稳定版本是从F、G开始的,有些老公司现在依然采用的是G版本。版本是每半年推出一次。想去安装以前的源可以点我去下载,官方文档中说如果你是红帽操作系统那么还需要注册才能用,而centos不需要,现在需要在两台主机上都安装OpenStack的包和SELinux,OpenStack的包比较快,SELinux比较慢,稍等片刻。
yum install python-openstackclient openstack-selinux -y
到现在为止,基础的包就装好了,现在起和计算节点没有任何关系了,在xshell里面把计算节点先关闭掉。只在controller控制节点里面安装就行了。
yum install mariadb mariadb-server python2-PyMySQL -y
注意这里有一个包是pyMySQL,因为OpenStack是python的这个pymysql是用来连接数据库的,跟我们学习爬虫时是一样的。装好之后对其进行配置,创建一个配置文件,然后启动并设置为开机自启动:
echo '[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8' >/etc/my.cnf.d/openstack.cnf
systemctl start mariadb
systemctl enable mariadb
上面命令直接复制粘贴就可以了,做完这些之后要记得把数据库安全初始化:
mysql_secure_installation
设置方法参见下图:
yum install rabbitmq-server -y
systemctl start rabbitmq-server.service
systemctl enable rabbitmq-server.service
给rabbitmq添加OpenStack用户
rabbitmqctl add_user openstack RABBIT_PASS
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
上面用户创建的时候那个RABBIT_PASS是密码,这个密码是OpenStack密码本里面的密码,密码本就是官方文档最开始的那个配置,执行之后会输入Creating user "openstack" ...就是说创建好了,然后第二步是给权限,.*一共有三个,分别是配置权限、读权限、写权限。返回结果是Setting permissions for user "openstack" in vhost "/" ...
再安装一个缓存服务,用来缓存令牌,用的是memcached缓存token。
yum install memcached python-memcached -y
sed -i 's#127.0.0.1#10.0.0.11#g' /etc/sysconfig/memcached
systemctl start memcached.service
systemctl enable memcached.service
安装完之后直接启动是可以启动起来的,但是启动了之后监听的是127.0.0.1的地址,也就是说只能自己用这个地址而OpenStack是一个SOA架构,要让10.0.0.网段都可以使用才行,如果你直接复制粘贴上面的命令就会自动给你改掉,所以你不需要修改,直接启动并设置为开机自启动就行了,下面看一下/etc/sysconfig/memcached配置文件的内容:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1"
第一个行是监听端口,第二行名称,第三行指最大连接数,第四行指其在内存中占用的空间,64Mb,末行就是监听的地址了。
最后只需要大检查一下,如果你在控制节点输出的和我一样,主要看ip和端口,都有的话就证明本节是没有问题的,后续才能接着做,记得把服务都要设置开机自启动,否则下次开机再检查时又没有了:
netstat -luntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.0.0.11:11211 0.0.0.0:* LISTEN 3084/memcached
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1003/sshd
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 2323/beam.smp
tcp 0 0 10.0.0.11:3306 0.0.0.0:* LISTEN 2141/mysqld
tcp6 0 0 :::22 :::* LISTEN 1003/sshd
tcp6 0 0 :::5672 :::* LISTEN 2323/beam.smp
udp 0 0 10.0.0.11:11211 0.0.0.0:* 3084/memcached
udp 0 0 0.0.0.0:123 0.0.0.0:* 1716/chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1716/chronyd
udp6 0 0 ::1:323 :::* 1716/chronyd