暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

原创|NO.C.0009——OpenStack|实例创建|启动一个实例|创建密钥对|添加额外云硬盘|通过控制台访问实例|

Java BBS 2021-02-19
427

一、实例创建(这也就是我们购买云主机的步骤)

  • 创建秘钥对:提供一个密钥对的认证方式,是可选选项,也是可以自动识别的

  • 启动一个实例:也就是启动一台虚拟机

  • 通过虚拟控制台访问你的实例:通过虚拟控制台的方式访问我们的实例

  • 远程访问你的实例:通过IP地址添加一个浮动IP的方式去访问实例

  • 为你的实例添加额外云硬盘:添加云硬盘,挂载一个块存储,再往云硬盘中写入数据。

二、代码构建OpenStack Launch an instance(openstack-controller节点操作)

——>1<——

利用OpenStack Networking(neutron)启动一个实例

  • 创建秘钥对

  • 启动一个实例

  • 通过虚拟控制台访问你的实例

  • 远程访问你的实例

  • 为你的实例添加额外的云硬盘

1、创建密钥对

//大多数云镜像使用公钥认证,这有别于传统的用户名/密码认证,在启动一个实例之前,你必须使用ssh-keygen命令生成一个密钥对。并将公钥添加到你的OpenStack环境。
//1、执行demo-openrc.sh
[root@controller ~]# source demo-openrc.sh
//2、生成秘钥对
[root@controller ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
69:3f:50:79:c8:69:72:09:78:c7:c9:88:13:32:f8:5f root@controller.nice.com
The key's randomart image is:
+--[ RSA 2048]----+
| .o .+.+ . |
| . o+ oo== |
| . o..X . |
| . E* . |
| . .S |
| .. o |
| o |
| . |
| |
+-----------------+
//3、添加公钥到OpenStack环境中,名称为demo-key
[root@controller ~]# nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key
//4、验证公钥是否添加成功
[root@controller ~]# nova keypair-list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| demo-key | 69:3f:50:79:c8:69:72:09:78:c7:c9:88:13:32:f8:5f |
+----------+-------------------------------------------------+

2、启动一个实例

//要启动一个实例,你必须最少指定flavor(云主机类型),image name(镜像名),network(网络),security group(安全组),key(秘钥)和instance name(实例名)
//1、flavor用来指定一个虚拟的独立分派的资源,包括CPU,内存和存储。
//查看可用的flavor:默认给我们的云主机的类型:内存大小,磁盘大小都有说明
[root@controller ~]# nova flavor-list //创建云主机的类型,默认提供5种类型,true为可用状态
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
//2、列出可用的镜像:也可以在centos官方下载云主机版本,会提供。
[root@controller ~]# nova image-list //可用我active状态
+--------------------------------------+---------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| 9254729e-15b4-4315-b396-3f3e2e5b339f | cirros-0.3.3-x86_64 | ACTIVE | |
+--------------------------------------+---------------------+--------+--------+
//3、列出可用的网络:
[root@controller ~]# neutron net-list //demo-net,ext-net两种类型
+--------------------------------------+----------+-------------------------------------------------------+
| id | name | subnets |
+--------------------------------------+----------+-------------------------------------------------------+
| 594c06f8-09a3-4d37-b5aa-a6f250356332 | demo-net | 33b3861c-9dfc-4768-b226-ccd5e85577f9 192.168.2.0/24 |
| 128ca157-22e0-4ef1-86af-c326e510ef89 | ext-net | d81339e0-4025-454c-b858-0815d2730255 100.100.100.0/24 |
+--------------------------------------+----------+-------------------------------------------------------+
//4、列出可用的安全组 //列出安全组,安全组是默认的,什么都没有放,为default
[root@controller ~]# nova secgroup-list
+--------------------------------------+---------+-------------+
| Id | Name | Description |
+--------------------------------------+---------+-------------+
| d1b78447-b8a0-4cb0-9972-62297f36142d | default | default |
+--------------------------------------+---------+-------------+
//5、启动实例:
//DEMO_NET_ID:网络的demo-net的ID号
//--security-group defult:指定安全组为defult
//--key-name demo-key:秘钥为demo-key
//demo-instance1:实例名词为demo-instance1
nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=DEMO_NET_ID --security-group default --key-name demo-key demo-instance1
//例如:nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=d36f6eb0-e59a-42b9-9209-5547e022484b --security-group default --key-name demo-key demo-instancel
[root@controller ~]# nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=594c06f8-09a3-4d37-b5aa-a6f250356332 --security-group default --key-name demo-key demo-instance1
+--------------------------------------+------------------------------------------------------------+
| Property | Value |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | Mr8CH7Z6Jgdn |
| config_drive | |
| created | 2021-01-11T21:27:08Z |
| flavor | m1.tiny (1) |
| hostId | |
| id | 5be7195f-6d95-48be-97f6-b6b5c73d52a9 |
| image | cirros-0.3.3-x86_64 (9254729e-15b4-4315-b396-3f3e2e5b339f) |
| key_name | demo-key |
| metadata | {} |
| name | demo-instance1 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id | 5f158b7cfb7448d18921158f9c92918f |
| updated | 2021-01-11T21:27:08Z |
| user_id | a98a737625214eadb3e19a80bc6f4011 |
+--------------------------------------+------------------------------------------------------------+
//6、查看实例状态:若状态为BUTLD;NOSTATE孵化中,等一会查看会为ACTIVE;Running状态;表示已经运行成功
//因为是需要进行虚拟机系统的安装,所以是比较慢的,
[root@controller ~]# nova list
+--------------------------------------+----------------+--------+------------+-------------+----------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+----------------+--------+------------+-------------+----------------------+
| 5be7195f-6d95-48be-97f6-b6b5c73d52a9 | demo-instance1 | ACTIVE | - | Running | demo-net=192.168.2.2 |
+--------------------------------------+----------------+--------+------------+-------------+----------------------+

3、通过虚拟控制台访问你的实例

//获取用于访问你的实例的Virtual Network Computing(VNC)会话URL,并通过浏览器访问:
[root@controller ~]# nova get-vnc-console demo-instance1 novnc //get-vnc查看一下VNC的访问地址
+-------+------------------------------------------------------------------------------------------+
| Type | Url |
+-------+------------------------------------------------------------------------------------------+
| novnc | http://controller.nice.com:6080/vnc_auto.html?token=52e51b7a-f376-49b4-b083-974fe087f0ec |
+-------+------------------------------------------------------------------------------------------+
//确保你的客户端能够解析controller节点的FQDN名。
//通过Chrome浏览器访问实例VNC的地址:http://controller.nice.com:6080/vnc_auto.html?token=52e51b7a-f376-49b4-b083-974fe087f0ec

//确认能够连接demo-net租户网络的网关
$ ping -t4 192.168.2.2
//确认能够连接ext-net外部网络
$ ping -t 192.168.2.2

4、远程访问你的实例(通过SSH去连接实例主机)

//1、添加规则到名为default的安全组:(放在你所有的虚拟机租户的虚拟机之前的,定义为安全组;可能有很多个安全组,不同的主机会连接到不通的安全组上,需要指定
//连接ssh协议的时候需要放行安全组,安全组相当于防火墙规则,若想ping的话需要放行ICMP协议。
//1.1、允许ICMP协议(ping):
//secgroup-add-rule default:default规则
//icmp:icmp协议
//-1-1:端口,-1代表没有
//10.0.0.0/0:连接地址
[root@controller ~]# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp | -1 | -1 | 0.0.0.0/0 | |
+-------------+-----------+---------+-----------+--------------+
//1.2、允许ssh协议:
[root@controller ~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp | 22 | 22 | 0.0.0.0/0 | |
+-------------+-----------+---------+-----------+--------------+
//2、在ext-net外部网络创建一个浮动IP地址:
[root@controller ~]# neutron floatingip-create ext-net
Created a new floatingip:
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| fixed_ip_address | |
| floating_ip_address | 100.100.100.13 |
| floating_network_id | 128ca157-22e0-4ef1-86af-c326e510ef89 |
| id | 632dc0d7-66e1-4f95-8138-7a4708aca86d |
| port_id | |
| router_id | |
| status | DOWN |
| tenant_id | 5f158b7cfb7448d18921158f9c92918f |
+---------------------+--------------------------------------+
//申请到了公网IP地址为:100.100.100.13
//3、分配浮动IP地址到你的实例:
//绑定的实例名称为demo-instance1
//绑定的地址为:100.100.100.13浮动IP地址为100.100.100.13
[root@controller ~]# nova floating-ip-associate demo-instance1 100.100.100.13
//4、检查你的浮动IP地址状态:
[root@controller ~]# nova list
+--------------------------------------+----------------+--------+------------+-------------+--------------------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+----------------+--------+------------+-------------+--------------------------------------+
| 5be7195f-6d95-48be-97f6-b6b5c73d52a9 | demo-instance1 | ACTIVE | - | Running | demo-net=192.168.2.2, 100.100.100.13 |
+--------------------------------------+----------------+--------+------------+-------------+--------------------------------------+
//查看到绑定的公网地址为:demo-net=192.168.2.2, 100.100.100.13
//5、从任何一个可以和ext-net网络通讯的主机测试连通性(本地通过cmd窗口ping)
ping -t4 100.100.100.13
//6、从任何一个可以和ext-net网络通讯的主机上通过ssh访问实例(模拟的是公网地址,此刻相当于公网连接状态)
[root@localhostr ~]# ssh cirros@100.100.100.13 //实例内操作:100.100.100.13
$ sudo fdisk -l //现在是没有任何的其它磁盘,
Device Boot Start End Blocks Id System
/dev/vda1 * 16065 2088449 1036192+ 83 Linux
//或将私钥文件复制到外部客户端,通过秘钥对验证登录
[root@localhostr ~]# ssh -i id_rsa cirros@100.100.100.13

5、为你的实例添加额外的云硬盘并创建文件系统/并格式化/挂载/写入文件:(把实例的云盘绑定过来)(在openstack-controller节点执行)

//如果你的环境中包含块存储服务,则你可以为你的实例添加云硬盘,
//1、执行demo环境变量脚本
[root@controller ~]# source demo-openrc.sh
//2、列出卷:列出可用云盘
[root@controller ~]# nova volume-list
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| ID | Status | Display Name | Size | Volume Type | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| cecefa8d-68dd-4610-a211-4bb4fa9542b0 | available | demo-volume1 | 1 | None | |
+--------------------------------------+-----------+--------------+------+-------------+-------------+
//3、附加demo-volume1卷到demo-instance1实例:可用云盘和实例进行绑定,通过可用云盘的ID号执行
//volume-attach:可用云盘:volume-attach
//demo-instance1 :实例名称
//cecefa8d-68dd-4610-a211-4bb4fa9542b0:云盘的ID号
[root@controller ~]# nova volume-list
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| ID | Status | Display Name | Size | Volume Type | Attached to |
+--------------------------------------+-----------+--------------+------+-------------+-------------+
| cecefa8d-68dd-4610-a211-4bb4fa9542b0 | available | demo-volume1 | 1 | None | |
+--------------------------------------+-----------+--------------+------+-------------+-------------+
[root@controller ~]# nova volume-attach demo-instance1 cecefa8d-68dd-4610-a211-4bb4fa9542b0
+----------+--------------------------------------+
| Property | Value |
+----------+--------------------------------------+
| device | /dev/vdb |
| id | cecefa8d-68dd-4610-a211-4bb4fa9542b0 |
| serverId | 5be7195f-6d95-48be-97f6-b6b5c73d52a9 |
| volumeId | cecefa8d-68dd-4610-a211-4bb4fa9542b0 |
+----------+--------------------------------------+
//4、列出卷
[root@controller ~]# nova volume-list
+--------------------------------------+--------+--------------+------+-------------+--------------------------------------+
| ID | Status | Display Name | Size | Volume Type | Attached to |
+--------------------------------------+--------+--------------+------+-------------+--------------------------------------+
| cecefa8d-68dd-4610-a211-4bb4fa9542b0 | in-use | demo-volume1 | 1 | None | 5be7195f-6d95-48be-97f6-b6b5c73d52a9 |
+--------------------------------------+--------+--------------+------+-------------+--------------------------------------+
//Accached to:查看到已经与一个实例进行了绑定:此处的ID号是虚拟机实例的ID号


——>5.、挂载云盘实操<——
//在100.100.100.13实例下操作:
//挂载云盘,并挂载云盘,格式化分区,创建文件系统,挂载,编辑文件
//5.1、查看可用的云盘
$ sudo fdisk -l //可以查看到/dev/sdb,这个就是可用的云盘
Disk /dev/vdb: 1073 MB, 1073741824 bytes
//5.2、为该云盘分区
$ sudo fdisk /dev/sdb
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151, default 2048): //从开始
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): //到结尾
Command (m for help): w //w保存
//5.3、查看分区状态
$ sudo fdisk -l
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2097151 1047552 83 Linux ///dev/vdb1分区已经出现
//5.4、格式化分区/dev/vdb1
$ sudo mkfs -t ext4 /dev/vdb1
//5.5、创建一个/data目录,并将/dev/vdb1的ext4文件系统挂载到/data目录下
$ sudo mkdir /data
$ sudo mount -t ext4 /dev/vdb1 /data
//5.6、查看是否挂载成功:
$ sudo mount
/dev/vdb1 on /data type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
//5.7、查看是否挂载成功
$sudo lsblk //或者使用lsblk查看挂载状态
-vdb1 253:17 0 1023M 0 part /data
//5.8、进入到/data目录下,并创建编辑文件1
$ cd /data
$ sudo touch 1
$ sudo vi 1
11111111111111111
aaaaaaaaaaaaaaaaa
//5.查看该文件
$ sudo cat 1
11111111111111111
aaaaaaaaaaaaaaaaa
//6、从任何一个可以和ext-net网络通讯的主机上通过ssh访问实例,并使用fdisk命令确认新存储。
[root@localhost ~]#ssh cirros@100.100.100.13
$ sudo fdisk -l //在实例下查看

辅助文本

二、代码构建OpenStack Launch an instance

——>1<——

利用OpenStack Networking(neutron)启动一个实例

  • 创建秘钥对

  • 启动一个实例

  • 通过虚拟控制台访问你的实例

  • 远程访问你的实例

  • 为你的实例添加额外的云硬盘

1、创建密钥对

//大多数云镜像使用公钥认证,这有别于传统的用户名/密码认证,在启动一个实例之前,你必须使用ssh-keygen命令生成一个密钥对。并将公钥添加到你的OpenStack环境。
//1、执行demo-openrc.sh
source demo-openrc.sh
//2、生成秘钥对
ssh-keygen
//3、添加公钥到OpenStack环境
novakeypair-add --pub-key ~/.ssh/id_rsa.pub demo-key
//4、验证公钥是否添加成功
nova keypair-list

2、启动一个实例

//要启动一个实例,你必须最少指定flavor(云主机类型),image name(镜像名),network(网络),security group(安全组),key(秘钥)和instance name(实例名)
//1、flavor用来指定一个虚拟的独立分派的资源,包括CPU,内存和存储。
//查看可用的flavor:
nova flavor-list
//2、列出可用的镜像:
nova image-list
//3、列出可用的网络:
neutronnet-list
//4、列出可用的安全组
nova secgroup-list
//5、启动实例:
nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=DEMO_NET_ID --security-group defult --key-name demo-key demo-instance1
//例如:nova boot --flavor m1.tiny --image cirros-0.3.3-x86_64 --nic net-id=d36f6eb0-e59a-42b9-9209-5547e022484b --security-group default --key-name demo-key demo-instancel
//6、查看实例状态:
nova list

3、通过虚拟控制台访问你的实例

//获取用于访问你的实例的Virtual Network Computing(VNC)会话URL,并通过浏览器访问:
nova get-vnc-console demo-instance1 novnc
//确保你的客户端能够解析controller节点的FQDN名。

//确认能够连接demo-net租户网络的网关
ping -c 4 192.168.2.1
//确认能够连接ext-net外部网络
ping -c 10.0.0.1

4、远程访问你的实例

//1、添加规则到名为default的安全组:
//1.1、允许ICMP协议(ping):
nova secgroup-add-rule default icmp-1-10.0.0.0/0
//1.2、允许ssh协议:
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
//2、在ext-net外部网络创建一个浮动IP地址:
neutron floatingip-create ext-net
//3、分配浮动IP地址到你的实例:
nova floating-ip-associate demo-instance1 10.0.0.110
//4、检查你的浮动IP地址状态:
nova list
//5、从任何一个可以和ext-net网络通讯的主机测试连通性
ping -c 4 10.0.0.110
//6、从任何一个可以和ext-net网络通讯的主机上通过ssh访问实例
ssh cirros@10.0.0.110
//或将私钥文件复制到外部客户端,通过秘钥对验证登录
ssh -i id_rsa cirros@10.0.0.110

5、为你的实例添加额外的云硬盘:

//如果你的环境中包含块存储服务,则你可以为你的实例添加云硬盘,
//1、执行demo环境变量脚本
source demo-openrc.sh
//2、列出卷
nova volume-list
//3、附加demo-volume1卷到demo-instance1实例:
nova volume-attach demo-instance1 158bea89-07db-4ac2-8115-66c0d6a4bb48
//4、列出卷
nova volume-list
//5、从任何一个可以和ext-net网络通讯的主机上通过ssh访问实例,并使用fdisk命令确认新存储。
ssh cirros@10.0.0.110
sudo fdisk -l

END





声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!



推荐阅读

Recommended reading

 







JavaBBS



Git











  






https://www.javabbs.cn/git






  JavaBBS大数据






→ 






https://www.javabbs.cn





/dsj





  JavaBBS云存储






→  https://www.javabbs.cn






/ycc







  JavaBBS数据库













  https://www.javabbs.cn






/sjk







  JavaBBS云计算













  https://www.javabbs.cn






/yjs







  JavaBBSIT.Log













https://www.javabbs.cn






/itl






  JavaBBSNginx













  https://www.javabbs.cn






/ngx






  JavaBBSzabbix













https://www.javabbs.cn






/zbx






  JavaBBSJavaSE













https://www.javabbs.cn






/jse







  JavaBBS社区文章













https://www.javabbs.cn






/bwz






  JavaBBS社区资料













https://www.javabbs.cn






/bzl






文章转载自Java BBS,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论