OpenStack实践系列⑥构建虚拟机实例
OpenStack实践系列⑥构建虚拟机实例
四、创建一台虚拟机
图解网络,并创建一个真实的桥接网络
创建一个单一扁平网络(名字:flat),网络类型为flat,网络适共享的(share),网络提供者:physnet1,它是和eth0关联起来的(
/etc/neutron/plugins/ml2/linuxbridge_agent.ini配置文件中配置项中的内容physical_interface_mappings = physnet1:eth0) [root@node1 ~]# source admin-openrc.sh [root@node1 ~]# neutron net-create flat --shared --provider:physical_network physnet1 --provider:network_type flat Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | True | | id | 2cd04d33-60a1-4d16-af09-19ad71f56f75 | | mtu | 0 | | name | flat | | port_security_enabled | True | | provider:network_type | flat | | provider:physical_network | physnet1 | | provider:segmentation_id | | | router:external | False | | shared | True | | status | ACTIVE | | subnets | | | tenant_id | eb5d7705ed7147e6beb4cd83a9f70a4a | +---------------------------+--------------------------------------+
对上一步创建的网络创建一个子网,名字为:subnet-create flat,设置dns和网关
[root@node1 ~]# neutron subnet-create flat 192.168.3.0/24 --name flat-subnet --allocation-pool start=192.168.3.100,end=192.168.3.200 --dns-nameserver 192.168.1.13 --gateway 192.168.3.1 Created a new subnet: +-------------------+----------------------------------------------------+ | Field | Value | +-------------------+----------------------------------------------------+ | allocation_pools | {"start": "192.168.3.100", "end": "192.168.3.200"} | | cidr | 192.168.3.0/24 | | dns_nameservers | 192.168.1.13 | | enable_dhcp | True | | gateway_ip | 192.168.3.1 | | host_routes | | | id | c2bc3265-178d-48d9-bef9-0c3544d1b0c3 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | flat-subnet | | network_id | 2cd04d33-60a1-4d16-af09-19ad71f56f75 | | subnetpool_id | | | tenant_id | eb5d7705ed7147e6beb4cd83a9f70a4a | +-------------------+----------------------------------------------------+
查看创建的网络和子网
[root@node1 ~]# neutron net-list +--------------------------------------+------+-----------------------------------------------------+ | id | name | subnets | +--------------------------------------+------+-----------------------------------------------------+ | 2cd04d33-60a1-4d16-af09-19ad71f56f75 | flat | c2bc3265-178d-48d9-bef9-0c3544d1b0c3 192.168.3.0/24 | +--------------------------------------+------+-----------------------------------------------------+
注:创建虚拟机之前,由于一个网络下不能存在多个dhcp,所以一定关闭其他的dhcp选项
下面开始正式创建虚拟机,为了可以连上所创建的虚拟机,在这里要创建一对公钥和私钥,并添加到openstack中
[root@node1 ~]# source demo-openrc.sh [root@node1 ~]# ssh-keygen -q -N "" Enter file in which to save the key (/root/.ssh/id_rsa): [root@node1 ~]# ls .ssh/ id_rsa id_rsa.pub [root@node1 ~]# nova keypair-add --pub-key .ssh/id_rsa.pub mykey [root@node1 ~]# nova keypair-list +-------+-------------------------------------------------+ | Name | Fingerprint | +-------+-------------------------------------------------+ | mykey | 10:b2:ae:16:3c:76:c4:94:41:d6:16:1d:b5:bc:4b:4d | +-------+-------------------------------------------------+ [root@node1 ~]# ls .ssh/ id_rsa id_rsa.pub
创建一个安全组,打开icmp和开放22端口
[root@node1 ~]# 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 | | +-------------+-----------+---------+-----------+--------------+ [root@node1 ~]# 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 | | +-------------+-----------+---------+-----------+--------------+
创建虚拟机之前要进行的确认虚拟机类型flavor(相当于EC2的intance的type)、需要的镜像(EC2的AMI),需要的网络(EC2的VPC),安全组(EC2的sg)
列出虚拟机可选类型
[root@node1 ~]# nova flavor-list +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | 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 | +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
列出可用镜像
[root@node1 ~]# nova image-list +--------------------------------------+--------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+--------+--------+--------+ | 6a806538-4532-4331-b79d-d69ea7bc478c | cirros | ACTIVE | | +--------------------------------------+--------+--------+--------+
列出可用网络
[root@node1 ~]# neutron net-list +--------------------------------------+------+-----------------------------------------------------+ | id | name | subnets | +--------------------------------------+------+-----------------------------------------------------+ | 2cd04d33-60a1-4d16-af09-19ad71f56f75 | flat | c2bc3265-178d-48d9-bef9-0c3544d1b0c3 192.168.3.0/24 | +--------------------------------------+------+-----------------------------------------------------+
列出可用安全组
[root@node1 ~]# nova secgroup-list +--------------------------------------+---------+------------------------+ | Id | Name | Description | +--------------------------------------+---------+------------------------+ | cf68eabe-4487-4bd4-8835-4a0ae7295de0 | default | Default security group | +--------------------------------------+---------+------------------------+
创建一台虚拟机,类型为m1.tiny,镜像为cirros(之前wget下载的),网络id为neutron net-list出来的,安全组就是默认的,选择刚开的创建的key-pair,虚拟机的名字为hello-instance
[root@node1 ~]# nova boot --flavor m1.tiny --image cirros --nic net-id=2cd04d33-60a1-4d16-af09-19ad71f56f75 --security-group default --key-name mykey hello-instance +--------------------------------------+-----------------------------------------------+ | Property | Value | +--------------------------------------+-----------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | - | | OS-EXT-SRV-ATTR:hypervisor_hostname | - | | OS-EXT-SRV-ATTR:instance_name | instance-00000001 | | 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 | wsNS4n8iKLoB | | config_drive | | | created | 2017-06-05T02:02:40Z | | flavor | m1.tiny (1) | | hostId | | | id | 3a995e89-4d71-4f70-9ae6-de82b65ebb74 | | image | cirros (6a806538-4532-4331-b79d-d69ea7bc478c) | | key_name | mykey | | metadata | {} | | name | hello-instance | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | security_groups | default | | status | BUILD | | tenant_id | eb5d7705ed7147e6beb4cd83a9f70a4a | | updated | 2017-06-05T02:02:40Z | | user_id | 4f71615a44c8422cbc034323d0d4c9a7 | +--------------------------------------+-----------------------------------------------+
查看虚拟机创建状态,状态为ACTIVE那台虚拟机已经成功创建
[root@node1 ~]# nova list +--------------------------------------+----------------+--------+------------+-------------+----------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+----------------+--------+------------+-------------+----------+ | b6ba588b-494d-4055-ac8e-5c3978ba9150 | hello-instance | BUILD | spawning | NOSTATE | | +--------------------------------------+----------------+--------+------------+-------------+----------+ [root@node1 ~]# nova list +--------------------------------------+----------------+--------+------------+-------------+--------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+----------------+--------+------------+-------------+--------------------+ | b6ba588b-494d-4055-ac8e-5c3978ba9150 | hello-instance | ACTIVE | - | Running | flat=192.168.3.102 | +--------------------------------------+----------------+--------+------------+-------------+--------------------+
ssh连接虚拟机并简单测试
[root@node1 ~]# ssh cirros@192.168.3.102 $ ls $ whoami cirros $ ifconfig eth0 Link encap:Ethernet HWaddr FA:16:3E:40:1A:59 inet addr:192.168.3.102 Bcast:192.168.3.255 Mask:255.255.255.0 inet6 addr: fe80::f816:3eff:fe40:1a59/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2767 errors:0 dropped:0 overruns:0 frame:0 TX packets:244 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:189669 (185.2 KiB) TX bytes:28305 (27.6 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
通过vnc生成URL在web界面上链接虚拟机
[root@node1 ~]# nova get-vnc-console hello-instance novnc
+-------+------------------------------------------------------------------------------------+
| Type | Url |
+-------+------------------------------------------------------------------------------------+
| novnc | http://192.168.3.199:6080/vnc_auto.html?token=a9483376-e7d1-4f12-8c82-72ee861afd15 |
+-------+------------------------------------------------------------------------------------+