安装OpenStack客户端并创建一个云主机
查看创建好的openstack项目中的信息和云主机网络连通性
openstack web界面使用方法
安装OpenStack客户端并创建一个云主机
安装OpenStack client端,方便后期使用命令行操作openstack
[root@test63 ~]# pip install python-openstackclient
报错:已经安装PyYAML 3.10,但是我们需要PyYAML
Found existing installation: PyYAML 3.10
Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
#注:找到现有安装:PyYAML 3.10
无法卸载'PyYAML'。 这是一个distutils安装的项目,因此我们无法准确确定哪些文件属于它,这将导致仅部分卸载。
[root@test63 ~]# pip install PyYAML --ignore-installed PyYAML #忽略安装的PyYAML,进行安装
[root@test63 ~]# pip install python-openstackclient #再次安装
报错:
Found existing installation: ipaddress 1.0.16
Cannot uninstall 'ipaddress'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
[root@test63 ~]# pip install ipaddress --ignore-installed ipaddress
[root@test63 ~]# pip install python-openstackclient
[root@test63 ~]# pip install python-neutronclient #安装openstack网络相关的命令
报错,提示已经安装pyinotify
[root@test63 ~]# pip install pyinotify --ignore-installed pyinotify
[root@test63 ~]# pip install python-neutronclient #最终安装成功。
使用init-runonce脚本创建一个openstack云项目
1、修改init-runonce脚本,指定浮动IP地址范围
init-runonce是在openstack中快速创建一个云项目例子的脚本。浮动IP就是云主机的公网IP。
[root@test63 ~]# vim /usr/share/kolla-ansible/init-runonce #网络需要根据实际情况修改
改:
12 EXT_NET_CIDR='10.0.2.0/24'
13 EXT_NET_RANGE='start=10.0.2.150,end=10.0.2.199'
14 EXT_NET_GATEWAY='10.0.2.1'
为:
EXT_NET_CIDR='192.168.1.0/24'
EXT_NET_RANGE='start=192.168.1.230,end=192.168.1.240'
EXT_NET_GATEWAY='192.168.1.1'
注:192.168.1.0的网络,就是我上面ens38接入的局域网中的地址,这个网络是通过局域网络中的路由器访问互联网。配置好这个,装完云主机实例就可以直接ping通。
2、使用init-runonce脚本创建一个openstack云项目
[root@test63 ~]# source /etc/kolla/admin-openrc.sh #必须先加载这个文件,把文件中的环境变量加入系统中,才有权限执行下面的命令
[root@test63 ~]# cd /usr/share/kolla-ansible
[root@test63 kolla-ansible]# ./init-runonce #最后弹出以下
3、在openstack中创建一个虚拟机
[root@test63 kolla-ansible]# openstack server create --image cirros --flavor m1.tiny --key-name mykey --nic net-id=a60a94b3-d1da-44c3-9c35-7505e1411378 demo1 #注: -nic net-id=xxxxxx ,这个ID每个人是不一样的,你需要写成你自己的。
4、给云主机分配浮动IP地址
登录链接:http://192.168.1.63/auth/login/?next=/ ,给虚拟机分配一个floating ip(浮动IP),这样就可以直接ping 通 floating ip的地址。
测试:
ping 192.168.1.32 #发现可以ping通
查看路由信息
[root@test63 ~]# source /etc/kolla/admin-openrc.sh #要读一下这个环境变量配置文件。丌然后,后期在执行命令时,会报如下错:
Missing value auth-url required for auth plugin password
[root@test63 ~]# openstack router list
[root@test63 ~]# openstack router show demo-router
查看网络列表:
[root@test63 ~]# openstack network list
[root@test63 ~]# openstack subnet list
[root@test63 ~]# openstack server show demo1 #查看云主机实例的信息
查看已有的网络的NameSpace:
[root@test63 ~]# ip netns
qrouter-0ff30de6-6ee8-4d33-a695-b5e3935b4b78
qdhcp-a60a94b3-d1da-44c3-9c35-7505e1411378
通过“Floating IP”访问虚拟机(用户名"cirros",密码"cubswin:)"):
[root@test63 ~]# ssh [email protected] #发现需要输入密码,是因为我们在创建云主机时,绑定了私钥,就可以实现无密码。 只限test63这台机器。 因为私钥是test63的。
现在开始测试:
登录上后,测试网络:
$ ping 192.168.1.1
$ ping 8.8.8.8
$ ping baidu.com
使用web界面来管理云主机。下面将完成以下操作:
1、 设置显示语言
2、 修改addmin密码
3、 创建一个新项目
4、 创建主机模版
5、 创建新用户
6、 创建外网、内网及路由器
7、 创建安全策略组
8、 创建密钥对
9、 分配浮动IP地址
10、 创建实例
1、设置显示语言:汉语
2、修改admin命令
查看当前密码:
[root@test63 ~]# cat /etc/kolla/admin-openrc.sh
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
3、创建一个openstack项目
实战1:项目描述,test-web网站运维部,需要6台云主机,6个公网IP,80G硬盘。 另一个游戏部门的需要数十台云主机,运行游戏。 你需要在openstack私有云,给两个部门分出相应的资源。
在openstack中创建一个子项目test-web,再创建一个adm1管理帐号,后期用于管理test-web项目。创建出项目和管理员帐号,后期把adm1帐号给网站运维部,让他自己维护就可以了。
注:一个openstack项目中,指定你可以占有openstack私有云中资源。
配置项目配额
4、创建一个配置比较低的云主机类型:m2.tiny
tiny [ˈtaɪni] 极小的,微小的
注:模版中的根磁盘必须小于存储组件所在服务的剩余空间。内存和cpu也必须小于物理机上真实可用的资源。
说明:从这里你可以改变当前的主机类型模版的大小。注意:这不会影响分配给使用该模版的任何现有实Ephemeral disk :临时磁盘 数据盘 Ephemeral( əˈfem(ə)rəl) 创建临时磁盘,ephemeral disk指的是除了系统盘和swap disk之外的空间,就是数据盘
5、为项目test-web创建一个普通帐号用户:
为项目test-web创建一个管理员帐号用户:
6、实战:以adm1登录,创建images镜像;创建内网int,创建路由器router1, 最终在openstack上创建好实例www.test.cn云主机。
退出admin ,以adm1登录:
查看test-web的概况:
创建一个www.test.cn和web.img镜像
cp cirros-0.3.4-x86_64-disk.img web1.img
注:默认:cirros镜像格式是 qcow2格式。
可以本地上传:C:\Users\shen\Desktop\test\soft\web1.img
#Minimum Disk : 最小磁盘。指使用这个镜像,最少需要多大空间。
互动:我们在做什么?
注:想在openstack启一台云主机实例,你需要一些基础设施:主机的硬件模版,镜像,网络,安全组等,最后才是创建一台云主机。
7、创建两个网络:一个内网,一个外网。
注:外网在之前已经使用脚本创建好:public1 了。这里我就不用创建外网了。 另外,在web界面创建的外网是上不了公网的。必须使用脚本创建才可以。
切换到test-web 这一列,配置网络:
添加一个内网网段:
IP地址池:以逗号分隔
查看拓扑图时,在chrome上查看,其他浏览器上查看时,有时看不到
8、创建一个路由器来连接两个网络
注:这个已经设置路由器一个接口连接到外部网络。
设置路由器router1的另一个接口,连接内网:
内网接口一开始是关闭,刷新一下页面,就运行中了,现在两个接口都运行了
查看网络拓扑图:
9、创建安全策略组web-ssh-ping,放行tcp,udp,icmp协议
web-ssh-ping
放行web-ssh-ping这些服务
放行80端口
放行22-443 tcp协议端口
放行icmp协议,才能ping
出口方向放行icmp协议:
注:对于出口方向,直接使用默认规则就可以了。放行所有数据包
10、创建web-key1
11、分配浮劢IP地址 ,指得是公网IP地址。例如:
先分出1个IP
12、创建实例, 云主机
注: 还使用cirros镜像。
这个默认就可以 ,直接下一步。
密钥对,默认就可以了,使用web-key1
剩下的直接默认就可以了。
报错:
解决:
原因1:一般是因为内存丌够用,这时free -m 查看一下物理机上实际可以用的内存,是否小于1G,如果小于1G肯定丌行。因为创建实例web1,需要使用1G内存。
原因2: 创建实例所使用的主机模版中的根磁盘必须小于存储组件所在服务的剩余空间。内存和cpu也必须小于物理机上真实可用的资源。
分配一个外网IP(浮动IP)地址
等1分钟,测试连通性:在物理机上,可以ping通
打开一个实例:
注:在windows下可以chrome浏览器实现正常访问
登录用户: cirros 密码: cubswin:)
在Linux的浏览器下访问时openstack,如果无法显示云主机的虚拟终端,就安装软件包:
[root@test63 Packages]# cd /mnt/Packages/
[root@test63 Packages]# rpm -ivh gnome-python2-canvas-2.28.1-14.el7.x86_64.rpm
[root@test63 Packages]# rpm -ivh libgnomecanvas-2.30.3-8.el7.x86_64.rpm
扩展:
canvas 用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图
Canvas [ˈkænvəs] 帆布油画(布)