天天看點

7.7、深入解析openstak工作流程

1、openstack的使用;

(1)使用openstack建立的使用者預設是default域,角色是user;

(2)域——》角色——》使用者——》項目

(3)配額在管理者登入後再項目中配;

(4)網絡位址不夠用時需要使用管理者登入,然後添加網絡;

(5)鏡像執行個體類型和網絡可以設定為公有和私有;

(6)隻有存在項目才能夠建立虛拟機,使用者在自己的項目中建立的虛拟機隻有自己能夠看到,超級管理者admin能操作所有的雲主機;

(7)openstak隻有兩種角色,一種是admin,一種是普通角色,user; 因為配置的原因使用dashboard建立的使用者預設域是default,角色是user;

(8)所有的使用者和項目的建立都有管理者進行操作;

(9)使用者可以在自己的項目中建立專屬于自己的鏡像、網絡、秘鑰對(隻屬于項目,管理者也看不到)、磁盤;

2、openstack虛拟機建立過程;

(1)虛拟機建立流程圖:

7.7、深入解析openstak工作流程

horizon、指令行、openstack api建立;

1)keystone驗證;

2)nova内部元件的協調;

3)nova和其它外部元件的協調;

4)nova-compute通過libvirt建立虛拟機,在建立的時候通過nova conductor輪詢更新資料庫;

(2)keystone的作用:

1)使用者驗證,所有的使用者都需要keystone進行驗證;

2)服務目錄的管理所有的服務都要在keystone上注冊服務和endpoint(admin(管理使用),internal(内部使用),public(外部使用));

(3)novascheduler的作用:

1)從消息隊列中擷取建立雲主機的類型,然後到nova-db中查找計算出滿足建立雲主機的計算節

點(nova-compute);

2)将得到的計算節點主機資訊發送到消息隊列中,相應的計算節點伺服器從消息隊列中擷取自己需要建立

虛拟機的指令;

(4)消息隊列的作用:

消息隊列是openstack的交通樞紐,nova元件之間的互動以及nova和其它服務的互動都要通過消息隊列;

(5)neutron使用的網絡:

1)單一扁平網絡是主控端和虛拟機在同一個網絡裡,不需要路由;

2)

3、openstack和kvm的差別:

openstack是雲計算iaas的一種實作,kvm是一種虛拟化的技術,openstack使用了kvm虛拟化技術來

建立虛拟機;

4、使用openstack私有雲的價值:

大規模使用虛拟化,提高實體機的資源使用率,友善集中管理,有助于隔離資源,虛拟機可以做鏡像和快照,

如果需要建立多個相同的虛拟機,隻需要用建立好的鏡像建立即可,且openstack社群比較活躍,出現問題有助

于解決,架構比較清晰,且openstack使用的是python開發,友善開發使用;

如果在一台伺服器上起多個程序,确實會提高伺服器的資源使用率,但是會帶來難題,列如在

一台機器上起多個tomcat,需要更改端口,管理的複雜度增加了,資源并沒有得到隔離,如果一個tomcat

把記憶體使用完了,那麼這台機器上的所有tomcat都會挂掉;

5、深入了解虛拟機:

(1)控制節點的鏡像位置和dashboard中的資訊:

1)虛拟機的資訊:

ls -l /var/lib/glance/images/a036ec33-6df8-45ec-adbe-4b0ac189dc8c

-rw-r----- 1 glance glance 13267968 3月 28 17:46 /var/lib/glance/images/a036ec33-6df8-45ec-adbe-4b0ac189dc8c

2)dashboard中的資訊:

7.7、深入解析openstak工作流程

(2)建立的虛拟機所在的計算節點資訊和在dashboard中的對應資訊:

1)虛拟機的資訊:

ls -l /var/lib/nova/instances/

總用量 4

drwxr-xr-x 2 nova nova 54 3月 31 22:56 b431f17d-0a1a-491c-9020-05da958cddd0

#建立的虛拟機目錄,目錄名稱是虛拟機的id号;

drwxr-xr-x 2 nova nova 54 3月 30 23:31 _base

#虛拟機基礎鏡像,是從控制節點的/var/lib/glance/images目錄下面拷貝過來的鏡像,格式一般是raw格式;

-rw-r--r-- 1 nova nova 31 4月 1 02:02 compute_nodes

#目前計算節點的資訊;

drwxr-xr-x 2 nova nova 54 3月 31 23:44 d8c3f760-087b-478f-91cb-8e9edfe72e19

drwxr-xr-x 2 nova nova 93 3月 30 23:31 locks

#鎖資訊;

ls -l /var/lib/nova/instances/b431f17d-0a1a-491c-9020-05da958cddd0/

總用量 2844

-rw------- 1 root root 19785 3月 31 23:04 console.log

#虛拟機的控制控制台輸出内容;

-rw-r--r-- 1 root root 2949120 3月 31 23:04 disk

#####################################################################################

#虛拟機的磁盤

#qemu-img info disk

# image: disk

# file format: qcow2

# virtual size: 1.0G (1073741824 bytes)

# disk size: 2.8M

# cluster_size: 65536

# backing file: /var/lib/nova/instances/_base/481422942b64717afc8ce72083b1dd1a8175b1cb

# Format specific information:

# compat: 1.1

# lazy refcounts: false

# refcount bits: 16

#corrupt: false

#######################################################################################

-rw-r--r-- 1 nova nova 79 3月 31 02:21 disk.info

#######################################################################################

#虛拟機的磁盤格式和位置資訊;

#cat disk.info

# {"/var/lib/nova/instances/b431f17d-0a1a-491c-9020-05da958cddd0/disk": "qcow2"}

#

########################################################################################

ls -l /etc/libvirt/qemu

總用量 16

-rw------- 1 root root 4144 4月 1 10:07 instance-00000004.xml

#虛拟機的xml檔案,該檔案不能夠改動,因為使用nova管理虛拟機時,該配置檔案會随虛拟機的配置而改變,虛拟機重新開機無效;

-rw------- 1 root root 4132 3月 31 23:44 instance-00000005.xml

drwx------ 3 root root 23 3月 29 17:22 networks

#提示:虛拟機不支援記憶體和cpu的熱添加,需要重新開機機器,公有雲也是這種做法;

virsh list --all

Id 名稱 狀态

----------------------------------------------------

1 instance-00000004 running

- instance-00000005 關閉

2)dashboard中的資訊:

7.7、深入解析openstak工作流程

(3)虛拟機的網絡(計算節點):

brctl show

bridge name bridge id STP enabled interfaces

brqc148981c-3a 8000.000c2944bb23 no eth0

tapcfd03699-61

提示:可以了解為橋接網卡brqc148981c-3a橋接到eth0,且占用了eht0的ip位址,橋接網卡brqc148981c-3a類似一個交換機,所有的虛拟機的

網卡都橋接到該交換機上,是以所有的主機都能夠通信;橋接網卡成對存在;

ifconfig

brqc148981c-3a: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 10.0.0.12 netmask 255.255.255.0 broadcast 10.0.0.255

ether 00:0c:29:44:bb:23 txqueuelen 1000 (Ethernet)

RX packets 175 bytes 50993 (49.7 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet6 fe80::e95f:198a:2a8c:3635 prefixlen 64 scopeid 0x20<link>

inet6 fe80::575c:f3b2:cb87:8431 prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:44:bb:23 txqueuelen 1000 (Ethernet)

RX packets 285 bytes 64115 (62.6 KiB)

RX errors 0 dropped 2 overruns 0 frame 0

TX packets 128 bytes 12359 (12.0 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.16.1.12 netmask 255.255.255.0 broadcast 172.16.1.255

inet6 fe80::db84:3581:affc:221a prefixlen 64 scopeid 0x20<link>

inet6 fe80::97d1:7e87:791e:dbea prefixlen 64 scopeid 0x20<link>

ether 00:0c:29:44:bb:2d txqueuelen 1000 (Ethernet)

RX packets 13656 bytes 4003081 (3.8 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 13534 bytes 5604234 (5.3 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1000 (Local Loopback)

RX packets 29063 bytes 1525822 (1.4 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 29063 bytes 1525822 (1.4 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

tapcfd03699-61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet6 fe80::fc16:3eff:fe75:889a prefixlen 64 scopeid 0x20<link>

ether fe:16:3e:75:88:9a txqueuelen 1000 (Ethernet)

RX packets 109 bytes 10816 (10.5 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 84 bytes 9208 (8.9 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

(4)秘鑰對mykey是如何放到虛拟機内部的:

通過中繼資料進行擷取;

1)在計算節點檢視虛拟機的控制台輸出資訊:

cat /var/lib/nova/instances/b431f17d-0a1a-491c-9020-05da958cddd0/console.log

2)在控制節點登入到虛拟機:

ssh -p22 [email protected]

3)在控制節點curl取中繼資料:

curl http://169.254.169.254/2009-04-04/meta-data

ami-id

ami-launch-index

ami-manifest-path

block-device-mapping/

hostname

instance-action

instance-id

instance-type

local-hostname

local-ipv4

placement/

public-hostname

public-ipv4

public-keys/

reservation-id

security-groups

169.254.169.254/2009-04-04/meta-data/public-keys/0/openssh-key

4)為什麼能夠通路169.254.169.254:

A、在虛拟機上檢視路由清單:

ip ro li

default via 10.0.0.253 dev eth0

10.0.0.0/24 dev eth0 src 10.0.0.84

169.254.169.254 via 10.0.0.70 dev eth0

#169.254.169.254的網關是10.0.0.70(是控制節點dhcp-agnet的位址 ps -ef | grep dhcp-agent);

B、在控制節點檢視命名空間的相關資訊:

#檢視命名空間清單;

ip netns li

qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 (id: 0)

#在命名空間中執行指令檢視命名空間的ip位址;

ip netns exec qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 ip ad li

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: ns-8c4ff3d7-3e@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

link/ether fa:16:3e:8d:a0:40 brd ff:ff:ff:ff:ff:ff link-netnsid 0

169.254.169.254/16 brd 169.254.255.255 scope global ns-8c4ff3d7-3e

valid_lft forever preferred_lft forever

10.0.0.70/24 brd 10.0.0.255 scope global ns-8c4ff3d7-3e

valid_lft forever preferred_lft forever

inet6 fe80::f816:3eff:fe8d:a040/64 scope link

valid_lft forever preferred_lft forever

#檢視命名空間中的80端口:

ip netns exec qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 netstat -tunlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2125/haproxy

tcp 0 0 169.254.169.254:53 0.0.0.0:* LISTEN 2191/dnsmasq

tcp 0 0 10.0.0.70:53 0.0.0.0:* LISTEN 2191/dnsmasq

tcp6 0 0 fe80::f816:3eff:fe8d:53 :::* LISTEN 2191/dnsmasq

udp 0 0 169.254.169.254:53 0.0.0.0:* 2191/dnsmasq

udp 0 0 10.0.0.70:53 0.0.0.0:* 2191/dnsmasq

udp 0 0 0.0.0.0:67 0.0.0.0:* 2191/dnsmasq

udp6 0 0 fe80::f816:3eff:fe8d:53 :::* 2191/dnsmasq

ip netns exec qdhcp-c148981c-3a89-4d41-b570-3a04dc71c0b7 ps -ef | grep 2125 | grep -v grep

neutron 2125 1 0 09:34 ? 00:00:00 haproxy -f /var/lib/neutron/ns-metadata-proxy/c148981c-3a89-4d41-b570-3a04dc71c0b7.conf

vim /etc/neutron/dhcp_agent.ini

[DEFAULT]

enable_isolated_metadata = true

繼續閱讀