openstack部署2

2023-05-14 21:00:47

 

檢查服務,檢視dashboard頁面有哪些功能

檢查服務狀態

檢查計算節點,控制節點服務是up狀態

 檢查網路節點是True的狀態。這裡的每個計算節點,都是一個neutron的使用者端。

檢視dashboard每個頁面的情況

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

修改配額

 映象點選啟動,就是根據這個映象建立雲範例,並且這個映象,已經被分配給這個範例了,自己不需要設定源了

 一次建立多個雲主機

 

 

 

 建立並使用使用者

 

 成功用剛剛建立的成員使用者登入

 成員使用者的身份管理,也只有專案管理選單,沒有使用者,組和角色的選單許可權。範例的許可權好像沒有少

 專案資訊也只能檢視自己有的

 只能檢視到使用者id和請求id,沒有顯示賬號名字。成員賬號成功建立下面的雲範例

 紀錄檔這裡顯示的好像和之前直接用kvm命令建立進入時一樣的提示

 禁用使用者

 

 

 已經登入的,檢視的時候,發現還是能檢視,但是退出重新登入的話,就提示憑據無效,登入不上了。

 新增ip地址池

檢視現有的ip地址池

ip地址分配池如下,下面還有閘道器,dns,cidr等資訊

 需要在管理員網路下,進入子網列表,編輯子網

 

 

看下面,多了一個ip分配區域了

 我們連線上資料庫

MariaDB [neutron]> show tables;
+-----------------------------------------+
| Tables_in_neutron                       |
+-----------------------------------------+
| address_scopes                          |
| agents                                  |
| alembic_version                         |
| allowedaddresspairs                     |
| arista_provisioned_nets                 |
| arista_provisioned_tenants              |
| arista_provisioned_vms                  |
| auto_allocated_topologies               |
| bgp_peers                               |
| bgp_speaker_dragent_bindings            |
| bgp_speaker_network_bindings            |
| bgp_speaker_peer_bindings               |
| bgp_speakers                            |
| brocadenetworks                         |
| brocadeports                            |
| cisco_csr_identifier_map                |
| cisco_hosting_devices                   |
| cisco_ml2_apic_contracts                |
| cisco_ml2_apic_host_links               |
| cisco_ml2_apic_names                    |
| cisco_ml2_n1kv_network_bindings         |
| cisco_ml2_n1kv_network_profiles         |
| cisco_ml2_n1kv_policy_profiles          |
| cisco_ml2_n1kv_port_bindings            |
| cisco_ml2_n1kv_profile_bindings         |
| cisco_ml2_n1kv_vlan_allocations         |
| cisco_ml2_n1kv_vxlan_allocations        |
| cisco_ml2_nexus_nve                     |
| cisco_ml2_nexusport_bindings            |
| cisco_port_mappings                     |
| cisco_router_mappings                   |
| consistencyhashes                       |
| default_security_group                  |
| dnsnameservers                          |
| dvr_host_macs                           |
| externalnetworks                        |
| extradhcpopts                           |
| firewall_policies                       |
| firewall_rules                          |
| firewalls                               |
| flavors                                 |
| flavorserviceprofilebindings            |
| floatingipdnses                         |
| floatingips                             |
| ha_router_agent_port_bindings           |
| ha_router_networks                      |
| ha_router_vrid_allocations              |
| healthmonitors                          |
| ikepolicies                             |
| ipallocationpools                       |
| ipallocations                           |
| ipamallocationpools                     |
| ipamallocations                         |
| ipamsubnets                             |
| ipsec_site_connections                  |
| ipsecpeercidrs                          |
| ipsecpolicies                           |
| lsn                                     |
| lsn_port                                |
| maclearningstates                       |
| members                                 |
| meteringlabelrules                      |
| meteringlabels                          |
| ml2_brocadenetworks                     |
| ml2_brocadeports                        |
| ml2_distributed_port_bindings           |
| ml2_flat_allocations                    |
| ml2_geneve_allocations                  |
| ml2_geneve_endpoints                    |
| ml2_gre_allocations                     |
| ml2_gre_endpoints                       |
| ml2_nexus_vxlan_allocations             |
| ml2_nexus_vxlan_mcast_groups            |
| ml2_port_binding_levels                 |
| ml2_port_bindings                       |
| ml2_ucsm_port_profiles                  |
| ml2_vlan_allocations                    |
| ml2_vxlan_allocations                   |
| ml2_vxlan_endpoints                     |
| multi_provider_networks                 |
| networkconnections                      |
| networkdhcpagentbindings                |
| networkdnsdomains                       |
| networkgatewaydevicereferences          |
| networkgatewaydevices                   |
| networkgateways                         |
| networkqueuemappings                    |
| networkrbacs                            |
| networks                                |
| networksecuritybindings                 |
| networksegments                         |
| neutron_nsx_network_mappings            |
| neutron_nsx_port_mappings               |
| neutron_nsx_router_mappings             |
| neutron_nsx_security_group_mappings     |
| nexthops                                |
| nsxv_edge_dhcp_static_bindings          |
| nsxv_edge_vnic_bindings                 |
| nsxv_firewall_rule_bindings             |
| nsxv_internal_edges                     |
| nsxv_internal_networks                  |
| nsxv_port_index_mappings                |
| nsxv_port_vnic_mappings                 |
| nsxv_router_bindings                    |
| nsxv_router_ext_attributes              |
| nsxv_rule_mappings                      |
| nsxv_security_group_section_mappings    |
| nsxv_spoofguard_policy_network_mappings |
| nsxv_tz_network_bindings                |
| nsxv_vdr_dhcp_bindings                  |
| nuage_net_partition_router_mapping      |
| nuage_net_partitions                    |
| nuage_provider_net_bindings             |
| nuage_subnet_l2dom_mapping              |
| poolloadbalanceragentbindings           |
| poolmonitorassociations                 |
| pools                                   |
| poolstatisticss                         |
| portbindingports                        |
| portdnses                               |
| portqueuemappings                       |
| ports                                   |
| portsecuritybindings                    |
| providerresourceassociations            |
| provisioningblocks                      |
| qos_bandwidth_limit_rules               |
| qos_dscp_marking_rules                  |
| qos_minimum_bandwidth_rules             |
| qos_network_policy_bindings             |
| qos_policies                            |
| qos_port_policy_bindings                |
| qospolicyrbacs                          |
| qosqueues                               |
| quotas                                  |
| quotausages                             |
| reservations                            |
| resourcedeltas                          |
| router_extra_attributes                 |
| routerl3agentbindings                   |
| routerports                             |
| routerroutes                            |
| routerrules                             |
| routers                                 |
| securitygroupportbindings               |
| securitygrouprules                      |
| securitygroups                          |
| segmenthostmappings                     |
| serviceprofiles                         |
| sessionpersistences                     |
| standardattributes                      |
| subnet_service_types                    |
| subnetpoolprefixes                      |
| subnetpools                             |
| subnetroutes                            |
| subnets                                 |
| subports                                |
| tags                                    |
| trunks                                  |
| tz_network_bindings                     |
| vcns_router_bindings                    |
| vips                                    |
| vpnservices                             |
+-----------------------------------------+
162 rows in set (0.00 sec)

MariaDB [neutron]> 
neutron 的表

我們可以看的ip地址分配池的表

 檢視當前用了哪些ip

 我們從資料庫檢視到的,就是頁面鐘的下面的ip地址那裡,100的ip雖然沒有顯示出來,但是是已經被分配出去了的,當刪除這個沒有建立成功的mcw-test1範例的時候,不知道會不會釋放這個ip出來。

 刪除範例,釋放ip的資料庫查詢

刪除範例,我們看下ip地址池是否是否出來,這裡即使是執行狀態的主機,也是可以刪除範例的。

 我們再看一下,111IP已經不在已分配的ip表中了。這應該就可以繼續分配給其它新建範例了。

 架構圖

 新增計算節點

準備新節點

 修改主機名和ip。

登入檢視環境

 部署新節點

參考:https://www.cnblogs.com/machangwei-8/p/17368098.html

把計算節點1的自制yum倉庫,複製到新節點計算節點2上面。

 nova的設定,my_ip要改成本機ip,這裡是10.0.0.43,其它的按照往下就可以

 因為計算節點的設定裡用的控制節點的主機名,因此我們需要給主機名新增解析的,控制節點不需要新增。不新增解析記錄,那麼啟動nova計算節點服務,會一直卡住,估計是找不到主機

 安裝nova計算服務,修改設定並啟動

 控制節點檢視,計算節點2已經是up了

 安裝使用者端,修改設定並啟動

 我們看到計算節點2已經新增進來了。

 在控制檯頁面檢視,虛擬機器器管理器,可以看的計算節點2了

 

 深入瞭解虛擬機器器

 我們先看下控制節點映象預設存放位置,放在如下位置,檔名稱就是映象id

如下,映象id

 我們看下計算節點,範例的映象放在哪裡了,如下位置

 我們這個節點有四個範例,上面目錄對應了四個目錄

 並且上面的那個目錄,是以虛擬機器器範例id作為目錄名字的。

我們選擇下面這個範例 

 然後看下下面的檔案,我這裡是只有三個

 別人部署的那裡多出個組態檔,我這裡沒有

 控制檯輸出,虛擬機器器啟動時的輸出記錄

 我們看下,我們的範例是1G

 但是在計算節點上,這個範例的disk顯示是3M

 我們可以看到,這是個qcow映象檔案,它有個後面的檔案,也就是有基礎映象。cow,就是寫時拷貝的機制,好像。因此,虛機的磁碟很小,他們有基礎映象,不一樣的地方,就複製過來,寫入到自己的磁碟檔案中,省空間。

 我們可以看下磁碟的詳情,名字,格式,虛擬大小1g,實際大小3M,基礎映象。qcow2這個格式的磁碟小,還是被加密的;像下面raw格式,加密,壓縮都沒有。

 磁碟資訊檔案是寫了這個虛擬機器器使用的磁碟的位置和格式

 我們看下下面的組態檔

 我們可以看的裡面的後設資料裡新增了nova相關的鍵值對。

 下面看下網路:

下面有個橋接網路卡橋接到ens33上面了。相當於所有虛擬機器器連線到一個交換機上, 

 下面我們看一下mykey是如何放進虛擬機器器的。

 

 我們在計算節點看一下是不能直接登入的。

 在控制節點是能連線上這個範例的,並且是免密的

 mykey是如何在範例中使用,使得控制節點能免密登入雲範例的呢,這就用到了metadata後設資料了。後設資料提供了一個使用者在建立雲主機的時候,可以對雲主機做設定的功能。

原理是在範例啟動的時候,可以存取後設資料,然後將存取結果儲存到範例當中。

我們看下計算節點1上mcw-test2範例的控制檯輸出紀錄檔,可以看的它去檢查一個地址了。我們可以看的下面獲取成功的,獲得了一個範例id。

[root@compute1 ~]# cat /var/lib/nova/instances/d36c277b-91e9-456f-8a2d-29deb7399fb1/console.log
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.2.0-80-virtual (buildd@batsu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #116-Ubuntu SMP Mon Mar 23 17:28:52 UTC 2015 (Ubuntu 3.2.0-80.116-virtual 3.2.68)
[    0.000000] Command line: LABEL=cirros-rootfs ro console=tty1 console=ttyS0
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
[    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 0000000003fdc000 (usable)
[    0.000000]  BIOS-e820: 0000000003fdc000 - 0000000004000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.8 present.
[    0.000000] No AGP bridge found
[    0.000000] last_pfn = 0x3fdc max_arch_pfn = 0x400000000
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] found SMP MP-table at [ffff8800000f63a0] f63a0
[    0.000000] init_memory_mapping: 0000000000000000-0000000003fdc000
[    0.000000] RAMDISK: 03c6d000 - 03fcc000
[    0.000000] ACPI: RSDP 00000000000f6170 00014 (v00 BOCHS )
[    0.000000] ACPI: RSDT 0000000003fe14f7 0002C (v01 BOCHS  BXPCRSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: FACP 0000000003fe140b 00074 (v01 BOCHS  BXPCFACP 00000001 BXPC 00000001)
[    0.000000] ACPI: DSDT 0000000003fe0040 013CB (v01 BOCHS  BXPCDSDT 00000001 BXPC 00000001)
[    0.000000] ACPI: FACS 0000000003fe0000 00040
[    0.000000] ACPI: APIC 0000000003fe147f 00078 (v01 BOCHS  BXPCAPIC 00000001 BXPC 00000001)
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at 0000000000000000-0000000003fdc000
[    0.000000] Initmem setup node 0 0000000000000000-0000000003fdc000
[    0.000000]   NODE_DATA [0000000003fd4000 - 0000000003fd8fff]
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000010 -> 0x00001000
[    0.000000]   DMA32    0x00001000 -> 0x00100000
[    0.000000]   Normal   empty
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[2] active PFN ranges
[    0.000000]     0: 0x00000010 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x00003fdc
[    0.000000] ACPI: PM-Timer IO Port: 0x608
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x00] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[    0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
[    0.000000] Allocating PCI resources starting at 4000000 (gap: 4000000:fbfc0000)
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:1 nr_node_ids:1
[    0.000000] PERCPU: Embedded 27 pages/cpu @ffff880003a00000 s78848 r8192 d23552 u2097152
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 15974
[    0.000000] Policy zone: DMA32
[    0.000000] Kernel command line: LABEL=cirros-rootfs ro console=tty1 console=ttyS0
[    0.000000] PID hash table entries: 256 (order: -1, 2048 bytes)
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Memory: 43560k/65392k available (6576k kernel code, 452k absent, 21380k reserved, 6620k data, 928k init)
[    0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]     RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] NR_IRQS:4352 nr_irqs:256 16
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty1] enabled
[    0.000000] console [ttyS0] enabled
[    0.000000] allocated 1048576 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 2803.189 MHz processor.
[    0.012870] Calibrating delay loop (skipped), value calculated using timer frequency.. 5606.37 BogoMIPS (lpj=11212756)
[    0.014705] pid_max: default: 32768 minimum: 301
[    0.017065] Security Framework initialized
[    0.030630] AppArmor: AppArmor initialized
[    0.032052] Yama: becoming mindful.
[    0.049330] Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.056003] Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.056496] Mount-cache hash table entries: 256
[    0.062044] Initializing cgroup subsys cpuacct
[    0.062627] Initializing cgroup subsys memory
[    0.063925] Initializing cgroup subsys devices
[    0.064259] Initializing cgroup subsys freezer
[    0.064504] Initializing cgroup subsys blkio
[    0.064718] Initializing cgroup subsys perf_event
[    0.066972] mce: CPU supports 10 MCE banks
[    0.068003] SMP alternatives: switching to UP code
[    0.147209] Freeing SMP alternatives: 24k freed
[    0.148008] ACPI: Core revision 20110623
[    0.160222] ftrace: allocating 26610 entries in 105 pages
[    0.172010] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.192011] CPU0: AMD QEMU Virtual CPU version 2.5+ stepping 03
[    0.192011] APIC calibration not consistent with PM-Timer: 672ms instead of 100ms
[    0.192011] APIC delta adjusted to PM-Timer: 6249988 (42019727)
[    0.192011] Performance Events: Broken PMU hardware detected, using software events only.
[    0.192011] NMI watchdog disabled (cpu0): hardware events not enabled
[    0.192692] Brought up 1 CPUs
[    0.192978] Total of 1 processors activated (5606.37 BogoMIPS).
[    0.213541] devtmpfs: initialized
[    0.216012] EVM: security.selinux
[    0.216012] EVM: security.SMACK64
[    0.216012] EVM: security.capability
[    0.220013] print_constraints: dummy: 
[    0.220013] RTC time: 12:29:32, date: 05/07/23
[    0.220013] NET: Registered protocol family 16
[    0.220013] ACPI: bus type pci registered
[    0.220013] PCI: Using configuration type 1 for base access
[    0.224013] bio: create slab <bio-0> at 0
[    0.224013] ACPI: Added _OSI(Module Device)
[    0.224013] ACPI: Added _OSI(Processor Device)
[    0.224013] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.224013] ACPI: Added _OSI(Processor Aggregator Device)
[    0.246668] ACPI: Interpreter enabled
[    0.247632] ACPI: (supports S0 S5)
[    0.248014] ACPI: Using IOAPIC for interrupt routing
[    0.280016] ACPI: No dock devices found.
[    0.280016] HEST: Table not found.
[    0.280016] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.280016] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.283490] pci_root PNP0A03:00: host bridge window [io  0x0000-0x0cf7]
[    0.284017] pci_root PNP0A03:00: host bridge window [io  0x0d00-0xffff]
[    0.284017] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff]
[    0.284017] pci_root PNP0A03:00: host bridge window [mem 0x04000000-0xfebfffff]
[    0.284017] pci_root PNP0A03:00: host bridge window [mem 0x100000000-0x17fffffff]
[    0.288017] pci 0000:00:01.3: quirk: [io  0x0600-0x063f] claimed by PIIX4 ACPI
[    0.288017] pci 0000:00:01.3: quirk: [io  0x0700-0x070f] claimed by PIIX4 SMB
[    0.368022]  pci0000:00: Unable to request _OSC control (_OSC support mask: 0x1e)
[    0.372022] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
[    0.372022] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[    0.372022] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[    0.372022] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
[    0.372022] ACPI: PCI Interrupt Link [LNKS] (IRQs *9)
[    0.373292] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.373779] vgaarb: loaded
[    0.373932] vgaarb: bridge control possible 0000:00:02.0
[    0.376010] i2c-core: driver [aat2870] using legacy suspend method
[    0.376022] i2c-core: driver [aat2870] using legacy resume method
[    0.376022] SCSI subsystem initialized
[    0.380023] usbcore: registered new interface driver usbfs
[    0.380023] usbcore: registered new interface driver hub
[    0.380023] usbcore: registered new device driver usb
[    0.380023] PCI: Using ACPI for IRQ routing
[    0.381603] NetLabel: Initializing
[    0.381853] NetLabel:  domain hash size = 128
[    0.382038] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.385772] NetLabel:  unlabeled traffic allowed by default
[    0.420025] AppArmor: AppArmor Filesystem Enabled
[    0.420025] pnp: PnP ACPI init
[    0.420025] ACPI: bus type pnp registered
[    0.432026] pnp: PnP ACPI: found 9 devices
[    0.432026] ACPI: ACPI bus type pnp unregistered
[    0.447211] Switching to clocksource acpi_pm
[    0.452932] NET: Registered protocol family 2
[    0.473118] IP route cache hash table entries: 512 (order: 0, 4096 bytes)
[    0.478884] TCP established hash table entries: 2048 (order: 3, 32768 bytes)
[    0.478884] TCP bind hash table entries: 2048 (order: 3, 32768 bytes)
[    0.478884] TCP: Hash tables configured (established 2048 bind 2048)
[    0.478884] TCP reno registered
[    0.478884] UDP hash table entries: 128 (order: 0, 4096 bytes)
[    0.478884] UDP-Lite hash table entries: 128 (order: 0, 4096 bytes)
[    0.478884] NET: Registered protocol family 1
[    0.478884] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[    0.478884] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[    0.478884] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[    0.478884] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
[    0.478884] pci 0000:00:01.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11
[    0.478884] pci 0000:00:01.2: PCI INT D disabled
[    0.478884] audit: initializing netlink socket (disabled)
[    0.478884] type=2000 audit(1683462570.472:1): initialized
[    0.569202] Trying to unpack rootfs image as initramfs...
[    0.651427] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.783279] VFS: Disk quotas dquot_6.5.2
[    0.785139] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.840429] fuse init (API version 7.17)
[    0.842209] msgmni has been set to 85
[    0.945138] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.945174] io scheduler noop registered
[    0.945174] io scheduler deadline registered (default)
[    0.945174] io scheduler cfq registered
[    0.945174] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    0.945174] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    0.945174] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.945174] ACPI: Power Button [PWRF]
[    0.945174] ERST: Table is not found!
[    0.945174] GHES: HEST is not enabled!
[    1.017900] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10
[    1.018225] virtio-pci 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10
[    1.020848] virtio-pci 0000:00:04.0: PCI INT A -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11
[    1.020848] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10
[    1.020848] virtio-pci 0000:00:05.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, high) -> IRQ 10
[    1.097276] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    1.100800] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.251928] 00:05: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    1.285849] Linux agpgart interface v0.103
[    1.316791] brd: module loaded
[    1.341018] loop: module loaded
[    1.367229]  vda: vda1
[    1.434025] scsi0 : ata_piix
[    1.437245] scsi1 : ata_piix
[    1.437761] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc0a0 irq 14
[    1.438150] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc0a8 irq 15
[    1.442626] Fixed MDIO Bus: probed
[    1.442935] tun: Universal TUN/TAP device driver, 1.6
[    1.443099] tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
[    1.464252] PPP generic driver version 2.4.2
[    1.526723] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.527170] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.527472] uhci_hcd: USB Universal Host Controller Interface driver
[    1.527912] uhci_hcd 0000:00:01.2: PCI INT D -> Link[LNKD] -> GSI 11 (level, high) -> IRQ 11
[    1.528581] uhci_hcd 0000:00:01.2: UHCI Host Controller
[    1.528581] uhci_hcd 0000:00:01.2: new USB bus registered, assigned bus number 1
[    1.528581] uhci_hcd 0000:00:01.2: irq 11, io base 0x0000c040
[    1.535599] hub 1-0:1.0: USB hub found
[    1.535599] hub 1-0:1.0: 2 ports detected
[    1.535599] usbcore: registered new interface driver libusual
[    1.535599] i8042: PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[    1.535599] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.535599] serio: i8042 AUX port at 0x60,0x64 irq 12
[    1.560853] mousedev: PS/2 mouse device common for all mice
[    1.561961] Refined TSC clocksource calibration: 2803.208 MHz.
[    1.562693] Switching to clocksource tsc
[    1.589842] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1
[    1.626561] rtc_cmos 00:01: RTC can wake from S4
[    1.626561] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0
[    1.626561] rtc0: alarms up to one day, y3k, 114 bytes nvram
[    1.685670] device-mapper: uevent: version 1.0.3
[    1.761383] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-[email protected]
[    1.763572] cpuidle: using governor ladder
[    1.782544] cpuidle: using governor menu
[    1.782747] EFI Variables Facility v0.08 2004-May-17
[    1.786370] TCP cubic registered
[    1.786370] NET: Registered protocol family 10
[    1.814276] NET: Registered protocol family 17
[    1.814776] Registering the dns_resolver key type
[    1.888590] registered taskstats version 1
[    1.943185] Freeing initrd memory: 3452k freed
[    2.067922] usb 1-1: new full-speed USB device number 2 using uhci_hcd
[    2.268360]   Magic number: 7:716:480
[    2.269094] rtc_cmos 00:01: setting system clock to 2023-05-07 12:29:36 UTC (1683462576)
[    2.269094] powernow-k8: Processor cpuid 6d3 not supported
[    2.269094] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
[    2.269094] EDD information not available.
[    2.287879] Freeing unused kernel memory: 928k freed
[    2.287879] Write protecting the kernel read-only data: 12288k
[    2.362175] Freeing unused kernel memory: 1596k freed
[    2.390371] Freeing unused kernel memory: 1184k freed

info: initramfs: up at 2.60
NOCHANGE: partition 1 is size 2072385. it cannot be grown
info: initramfs loading root from /dev/vda1
info: /etc/init.d/rc.sysinit: up at 5.68
info: container: none
Starting logging: OK
modprobe: module virtio_blk not found in modules.dep
modprobe: module virtio_net not found in modules.dep
WARN: /etc/rc3.d/S10-load-modules failed
Initializing random number generator... done.
Starting acpid: OK
cirros-ds 'local' up at 9.25
no results found for mode=local. up 9.80. searched: nocloud configdrive ec2
Starting network...
udhcpc (v1.20.1) started
Sending discover...
Sending select for 10.0.0.104...
Lease of 10.0.0.104 obtained, lease time 86400
route: SIOCADDRT: File exists
WARN: failed: route add -net "0.0.0.0/0" gw "10.0.0.254"
cirros-ds 'net' up at 12.09
checking http://169.254.169.254/2009-04-04/instance-id
failed 1/20: up 12.61. request failed
failed 2/20: up 25.33. request failed
failed 3/20: up 37.68. request failed
failed 4/20: up 50.04. request failed
successful after 5/20 tries: up 62.28. iid=i-00000002
failed to get http://169.254.169.254/2009-04-04/user-data
warning: no ec2 metadata for user-data
found datasource (ec2, net)
cirros-apply-net already run per instance
check-version already run per instance
Top of dropbear init script
Starting dropbear sshd: remove-dropbear-host-keys already run per instance
WARN: generating key of type ecdsa failed!
OK
userdata already run per instance
=== system information ===
Platform: RDO OpenStack Compute
Container: none
Arch: x86_64
CPU(s): 1 @ 2803.189 MHz
Cores/Sockets/Threads: 1/1/1
Virt-type: AMD-V
RAM Size: 49MB
Disks:
NAME MAJ:MIN       SIZE LABEL         MOUNTPOINT
vda  253:0   1073741824               
vda1 253:1   1061061120 cirros-rootfs /
=== sshd host keys ===
-----BEGIN SSH HOST KEY KEYS-----
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwDRjv4xdk+LE/wd3EsR6o9CB9Nl8VUbIQcmOCxyuyw3TUOXQ+wqUXJtBnepqtNEtL+uQLUQGZYT2UZcsRl+FAymMRAQZFPZjZ4hW5ObEZV8vZG3mh7fGg9m08PB3anSKrzigyMF+zDOFl5x2xRIBIUyVpvyOkbaXTuuPfcc+VzVC59v root@mcw-test2
ssh-dss AAAAB3NzaC1kc3MAAACBANQSxThGvfRUc+A7Ozs4Ps32kRqwbz1N64fuP2sMZl9wNAC45nSFSTMWDEX3LTHLb9Ct4UONmZ7xIIGYj+kAjVUC3bbmddlF2ogU7b6bzAJI85Gcred1JTxYh6p6nvkT4+aUv51nEpJhgF+cwwQy/CeVo/7hszfuT3Yv+mWQMk4vAAAAFQDOKd/ZvUWfHHLr0TrCz65+BlheEwAAAIAOnvNYTqPfh2Hwm2vr18BPqOzqBdHP2pcWP8g5qHApWttF9XBzwUiS35ydPxOL8lXMwQxTkjfvS/kBSGog6405dNkzMZ0thV3/xi8XBZ5YXpRgMEUbM/PoqkEyvuN0xT6F0dc2d1HycX0U3VsoxAVDN3XuNHHkIqkoUx59YM77RAAAAIBX76GEOfoRGL+Xb84nDDCgoAaifDX3WTyzynPvpjKCTp8HbjnLfB37799lVQ1C/LZYjvIrVJf+r+QznhQw1IqAqmiYuVhIDX9I1twl9reghpwSAvhRfM2ZoH31mURcMh0uP4O4dGuA71T3PDMhaAMZPzZrAvBpNC11ILHS0m/n8A== root@mcw-test2
-----END SSH HOST KEY KEYS-----
=== network info ===
if-info: lo,up,127.0.0.1,8,::1
if-info: eth0,up,10.0.0.104,24,fe80::f816:3eff:febd:a625
ip-route:default via 10.0.0.254 dev eth0 
ip-route:10.0.0.0/24 dev eth0  src 10.0.0.104 
ip-route:169.254.169.254 via 10.0.0.100 dev eth0 
=== datasource: ec2 net ===
instance-id: i-00000002
name: N/A
availability-zone: nova
local-hostname: mcw-test2.novalocal
launch-index: 0
=== cirros: current=0.3.5 latest=0.6.1 uptime=83.20 ===
  ____               ____  ____
 / __/ __ ____ ____ / __ \/ __/
/ /__ / // __// __// /_/ /\ \ 
\___//_//_/  /_/   \____/___/ 
   http://cirros-cloud.net


login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
mcw-test2 login: [18782.313707] Clocksource tsc unstable (delta = 9373947535 ns)
[44483.430035] hrtimer: interrupt took 14386086 ns

login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
mcw-test2 login: 

login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
mcw-test2 login: [root@compute1 ~]# 
mcw-test2的所有控制檯輸出

 我們可以看到,控制節點能免密連線到計算節點1上的虛擬機器器,是因為這個雲範例中已經生成了authorized_keys檔案,並且儲存了控制節點的公鑰。

 根據上面控制檯紀錄檔的請求地址,我們在控制檯免密連線上計算節點的虛擬機器器,然後請求這個地址,可以看到,在範例中能請求到一些資料,包括控制節點的公鑰資料。

 這個私鑰是那裡來的呢,是mykey裡面的,我們之前上傳了金鑰對。

 我們看下第一個命令應該是面互動生成控制節點金鑰對用的。

 然後執行命令金鑰對建立,指定公鑰是控制節點的公鑰檔案,給公鑰起個名字mykey。然後把這個mykey,是弄到了後設資料的介面裡面,建立虛擬機器器時,指定這個金鑰,就將這個公鑰檔案放到了後設資料的即可中。虛擬機器器請求介面就能獲取到這個公鑰並寫入到自己的認證檔案中,這樣就是把某個主機,這裡是控制節點的公鑰給了虛擬機器器,在網路通的情況然後這個主機就能免密登入這個虛擬機器器了,

 我們再來看下,命令列建立範例,也是指定金鑰對的,

openstack server create --flavor <**對_name> --image <映象_name> --nic net-id=<網路卡_id> --security-group <安全組_id> --availability-zone <AZ_name>(:可加主機名) --key-name <**對_name> <虛擬機器器_name>

執行情況如下,指定mykey作為金鑰對

 我們可以看到雲平臺頁面金鑰對中,它也是顯示的公鑰,是我們控制檯節點的公鑰,因為我們建立命令就是公鑰引數,指定的是控制檯公鑰檔案

 我們繼續來看,在計算節點的一個虛擬機器器中,我們請求後設資料中的公鑰

 為什麼能請求到這個地址呢,重新部署一套,好像這個ip也是固定的,介面也是固定的。curl http://169.254.169.254/2009-04-04/meta-data/public-keys/0/openssh-key

我們還是連線mcw-test2這臺範例。看下路由,請求169.254.169.254這個ip的時候,閘道器是10.0.0.100,我們可以看到,在範例中這個閘道器是通的

 我們可以在網路的埠下,找到範例中的那個閘道器10.0.0.100,可以看到,這個IP對應的連線裝置是dhcp,

 我們去控制節點看下,是有這個dhcp程序的。但是我們控制節點的ip是10.0.0.41,橋接到ens33上的。跟上圖中顯示的10.0.0.100是不同的,這是怎麼回事呢,

 這是因為這裡使用了網路名稱空間了,k8s中就使用了網路名稱空間。我們在控制節點列出網路名稱空間,然後 exec接它的id,再執行命令,就可以看到上面的閘道器10.0.0.100,我們也可以看到虛擬機器器中可以存取到後設資料的ip地址169.254.168.254也在這裡,

 我們看下我們進入虛擬機器器中請求後設資料介面,那麼是需要有個80埠提供服務的

 我們在這個網路名稱空間下,找這個80服務,可以看到是個python程序,然後根據程序id,在網路名稱空間下和控制節點下都能找個找個程序,可以看到程序就是後設資料的,後設資料埠是80。

 因此,我們建立虛擬機器器時想要往虛擬機器器裡面新增東西,可以使用把它加到後設資料的方式,然後在虛擬機器器裡面寫指令碼請求並儲存到虛擬機器器中,

 後面我們存取後設資料500錯誤,

 我們檢視後設資料服務的紀錄檔,可以看到500服務閘道器錯誤。這裡直接在控制節點ps找個找個程序也是可以的。然後找到紀錄檔。

 發現報錯

[root@controller ~]# systemctl status neutron-l3-agent.service 
● neutron-l3-agent.service - OpenStack Neutron Layer 3 Agent
   Loaded: loaded (/usr/lib/systemd/system/neutron-l3-agent.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Sat 2023-05-13 00:57:05 CST; 3min 17s ago
  Process: 34086 ExecStart=/usr/bin/neutron-l3-agent --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/l3_agent --config-file /etc/neutron/neutron.conf --config-dir /etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-l3-agent --log-file /var/log/neutron/l3-agent.log (code=exited, status=1/FAILURE)
 Main PID: 34086 (code=exited, status=1/FAILURE)

May 13 00:57:05 controller systemd[1]: neutron-l3-agent.service: main process exited, code=exited, status=1/FAILURE
May 13 00:57:05 controller systemd[1]: Unit neutron-l3-agent.service entered failed state.
May 13 00:57:05 controller systemd[1]: neutron-l3-agent.service failed.
May 13 00:57:05 controller systemd[1]: neutron-l3-agent.service holdoff time over, scheduling restart.
May 13 00:57:05 controller systemd[1]: start request repeated too quickly for neutron-l3-agent.service
May 13 00:57:05 controller systemd[1]: Failed to start OpenStack Neutron Layer 3 Agent.
May 13 00:57:05 controller systemd[1]: Unit neutron-l3-agent.service entered failed state.
May 13 00:57:05 controller systemd[1]: neutron-l3-agent.service failed.
[root@controller ~]# tail  /var/log/neutron/l3-agent.log 
2023-05-13 00:56:59.895 34051 ERROR neutron.agent.l3.agent [-] An interface driver must be specified
2023-05-13 00:57:01.595 34064 INFO neutron.common.config [-] Logging enabled!
2023-05-13 00:57:01.595 34064 INFO neutron.common.config [-] /usr/bin/neutron-l3-agent version 10.0.7
2023-05-13 00:57:01.607 34064 ERROR neutron.agent.l3.agent [-] An interface driver must be specified
2023-05-13 00:57:03.334 34075 INFO neutron.common.config [-] Logging enabled!
2023-05-13 00:57:03.335 34075 INFO neutron.common.config [-] /usr/bin/neutron-l3-agent version 10.0.7
2023-05-13 00:57:03.346 34075 ERROR neutron.agent.l3.agent [-] An interface driver must be specified
2023-05-13 00:57:05.330 34086 INFO neutron.common.config [-] Logging enabled!
2023-05-13 00:57:05.331 34086 INFO neutron.common.config [-] /usr/bin/neutron-l3-agent version 10.0.7
2023-05-13 00:57:05.347 34086 ERROR neutron.agent.l3.agent [-] An interface driver must be specified
[root@controller ~]# 

修改設定重啟沒生效

[root@controller ~]# grep interface_driver /etc/neutron/l3_agent.ini
#interface_driver = <None>
interface_driver = linuxbridge
[root@controller ~]#
[root@controller ~]# systemctl start neutron-l3-agent.service

沒辦法了只能重啟大的網路服務了

[root@controller ~]# systemctl restart  neutron-server.service 
[root@controller ~]# 

 重啟之後,從虛擬機器器中請求後設資料,可以正常請求到了

 我們從後設資料中以及其它資訊可以看到,它這裡是從dhcp獲取到的ip。我們虛擬機器器應該不是分配的ip,應該用指定的ip,

我們可以看到,eth0是動態ip,我們應該設定為靜態ip,那麼怎麼做呢,當建立範例的時候,寫個指令碼,啟動指令碼去請求後設資料服務提供一個ip,然後將找個ip寫入到網路卡組態檔中,並且把網路卡改成靜態ip。這樣就不會隨著範例的重啟,ip會發生變化。

 建立生產用的openstack虛擬機器器映象

官網地址:https://docs.openstack.org/image-guide/

 可以獲取,也可以手動自己建立映象

 將centos官網下載的映象傳到伺服器compute1上面。

 1、我們先建立一個磁碟作為系統磁碟,這裡定為10G大小。

qemu-img create -f qcow2  /root/mcw/centos.qcow2  10G

2.建立虛擬機器器

指定上面建立的磁碟,指定使用的系統映象

virt-install --virt-type kvm --name centos --ram 1024 \
  --disk /root/mcw/centos.qcow2,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0 --noautoconsole \
  --os-type=linux --os-variant=centos7.0 \
  --location=/root/mcw/CentOS-7-x86_64-DVD-1708.iso

 openstack計算節點,並沒有建立kvm安裝時預設的橋接網路卡virbr0,我們這裡也不建立這個網橋或者是指定使用計算節點的網橋了,防止openstack環境被弄壞。

 我們開啟之前安裝kvm的主機mcw11,在這個上面建立openstack映象,

 語言,這裡用一次中文的吧

 這裡只要一個根分割區

 網路卡,虛擬機器器安裝好像預設eth0,我們這裡先不開啟,後面再設定

 上面磁碟改一下,我們這裡沒有boot分割區,好像磁碟選擇有問題。然後開始安裝,並修改root密碼為123456

 3、啟動虛擬機器器

 4、設定以及安裝常用軟體

網路卡預設設定如下

 我們改成開機啟動,把uuid ipv6等刪除,只留下下面幾個

 停止禁用,修改dns設定

 然後做些裝機初始化的優化等等

 

 我們先看一下需要用的init.sh指令碼

#!/bin/bash

set_key(){
  if [ ! -d /root/.ssh ]; then
      mkdir -p /root/.ssh
      chmod 700 /root/.ssh
  fi
for ((i=1;i<=5;i++));do
     if [ ! -f /root/.ssh/authorized_keys ];then
      curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
      if [ $? -eq 0 ];then
        cat /tmp/metadata-key >> /root/.ssh/authorized_keys
        chmod 0600 /root/.ssh/authorized_keys
        restorecon /root/.ssh/authorized_keys
        rm -f /tmp/metadata-key
        echo "Successfully retrieved public key from instance metadata"
        echo "*****************"
        echo "AUTHORIZED KEYS"
        echo "*****************"
        cat /root/.ssh/authorized_keys
        echo "*****************"
      fi
    fi
done
}

set_hostname(){
    PRE_HOSTNAME=$(curl -s http://169.254.169.254/latest/meta-data/hostname)
    DOMAIN_NAME=$(echo $PRE_HOSTNAME | awk -F '.' '{print $1}')
    hostnamectl set-hostname `echo ${DOMAIN_NAME}.example.com`
}

set_static_ip(){
    PRE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
    NET_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0"
echo  "TYPE=Ethernet" > $NET_FILE
echo  "BOOTPROTO=static" >> $NET_FILE
echo  "NAME=eth0" >> $NET_FILE
echo  "DEVICE=eth0" >> $NET_FILE
echo  "ONBOOT=yes" >> $NET_FILE
echo  "IPADDR=${PRE_IP}" >> $NET_FILE
echo  "NETMASK=255.255.255.0" >> $NET_FILE
echo  "GATEWAY=192.168.56.2" >> $NET_FILE
}

main(){
   set_key;
   set_hostname;
   set_static_ip;
   /bin/cp /tmp/rc.local /etc/rc.d/rc.local
   reboot
}

main

我們連線上mcw-test2這個範例,去請求一下試試

 將宿主機上寫好的指令碼複製過來,把那個cp的去掉

 然後在開機自啟動檔案裡執行指令碼,給rc.local加了個執行許可權

 我在虛擬機器器中再新增一個檔案,作為自定義的一些標記,

 我們將上面設定好的虛擬機器器映象檔案複製到openstack控制節點上

 我們上傳到控制節點後,將映象上傳到openstack裡面,

openstack image create "CentOS-7-x86_64" --file /opt/centos.qcow2 --disk-format \
qcow2 --container-format bare --public

[root@controller ~]# ls /opt/
centos.qcow2  cirros-0.3.5-x86_64-disk.img  repo
[root@controller ~]# cd /opt/
[root@controller opt]# 
[root@controller opt]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 6cfe6502-36f0-4155-ae4e-a84cb910049a | cirros | active |
+--------------------------------------+--------+--------+
[root@controller opt]# openstack image create "CentOS-7-x86_64" --file /opt/centos.qcow2 --disk-format \
> qcow2 --container-format bare --public
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | 71dbce3ab4fc7aa720fdc5d3aff321ef                     |
| container_format | bare                                                 |
| created_at       | 2023-05-13T05:51:48Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/8fec0b5d-4953-4323-adbc-ba6815c9c476/file |
| id               | 8fec0b5d-4953-4323-adbc-ba6815c9c476                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | CentOS-7-x86_64                                      |
| owner            | b29c52befb8448378d99086df5053737                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 1429209088                                           |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2023-05-13T05:52:57Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+
[root@controller opt]# openstack image list
+--------------------------------------+-----------------+--------+
| ID                                   | Name            | Status |
+--------------------------------------+-----------------+--------+
| 8fec0b5d-4953-4323-adbc-ba6815c9c476 | CentOS-7-x86_64 | active |
| 6cfe6502-36f0-4155-ae4e-a84cb910049a | cirros          | active |
+--------------------------------------+-----------------+--------+
[root@controller opt]# 

 已有的雲主機型別,記憶體太小了,用我們建立的映象,無法啟動。我們需要admin使用者建立一個範例型別

 

 admin專案能用

 我們用這個普通使用者來登入使用

 在普通使用者下可以看到這個映象

 

 

 

 

 

 錯誤: 範例 "newImageTest" 執行所請求操作失敗,範例處於錯誤狀態。: 請稍後再試 [錯誤: Host 'compute2' is not mapped to any cell].

[root@controller opt]# nova-manage cell_v2 discover_hosts --verbose
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting compute nodes from cell 'cell1': ac223cf4-f307-45bb-a9fc-71001b026dde
Found 2 computes in cell: ac223cf4-f307-45bb-a9fc-71001b026dde
Checking host mapping for compute host 'compute1': 093a16a7-e3bd-4734-bcf3-6dfbbdfa599a
Checking host mapping for compute host 'compute2': 395217a4-1605-4455-bea0-de597d50ef41
Creating host mapping for compute host 'compute2': 395217a4-1605-4455-bea0-de597d50ef41
[root@controller opt]# openstack compute service list --service nova-compute
+----+--------------+----------+------+---------+-------+----------------------------+
| ID | Binary       | Host     | Zone | Status  | State | Updated At                 |
+----+--------------+----------+------+---------+-------+----------------------------+
|  6 | nova-compute | compute1 | nova | enabled | up    | 2023-05-13T06:29:07.000000 |
|  7 | nova-compute | compute2 | nova | enabled | up    | 2023-05-13T06:29:11.000000 |
+----+--------------+----------+------+---------+-------+----------------------------+
[root@controller opt]# 

因為第一次用這個磁碟作為系統磁碟,計算節點會去下載這個映象到計算節點本地目錄下,然後轉換格式,

 在這個範例下,建立好下面檔案,基於上面下載好的映象作為基礎映象,然後建立自己的磁碟檔案disk。

 init.sh指令碼閘道器沒有改

範例開機顯示Booting from Hard Disk_boot from hard disk解決辦法: 

新增設定:

[root@compute2 instances]# vim /etc/nova/nova.conf

[libvirt]
cpu_mode = none
virt_type=qemu

 

重啟服務

[root@compute2 instances]# systemctl restart openstack-nova-compute.service

 

上面映象不行,修改一下重新上傳一個

 

 

 錯誤: 範例 "imageTest" 執行所請求操作失敗,範例處於錯誤狀態。: 請稍後再試 [錯誤: No valid host was found. There are not enough hosts available.].

 

建立報錯了。回頭看看怎麼縮容

 刪除一些範例,就能建立了,這裡的原因是限額了吧

 範例被排程到了計算節點1了,這邊正在複製新的映象。我們前面上傳到openstack的映象。這個計算節點第一次使用這個映象的時候,建立範例會很慢,因為這裡是需要複製到計算節點,然後以這個映象為基礎映象建立範例。

 下面就是轉換格式,我們可以 看到轉換格式的程序

 有問題啊

 好像這個需要安裝,我們的映象是沒有裝的

 

 放棄了,暫時不看這個了

 cinder

openstack endpoint create --region RegionOne \
  volume public http://192.168.56.11:8776/v1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
  volume internal http://192.168.56.11:8776/v1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
  volume admin http://192.168.56.11:8776/v1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
  volumev2 public http://192.168.56.11:8776/v2/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
  volumev2 internal http://192.168.56.11:8776/v2/%\(tenant_id\)s

openstack endpoint create --region RegionOne \
  volumev2 admin http://192.168.56.11:8776/v2/%\(tenant_id\)s
  
  1.使用本地硬碟
  2.系統使用本地硬碟  + 雲硬碟(資料盤)  ISCSI  NFS  GlusterFS  Ceph
 cinder type-create NFS
cinder type-create ISCSI  
cinder type-key NFS set volume_backend_name=NFS-Storage
cinder type-key ISCSI set volume_backend_name=ISCSI-Storage


1.cinder後端儲存步驟

1.把儲存準備好。
2.安裝cinder-volume
3.vim /etc/cinder/cinder.conf 
[xxx]
volume_driver=xxx
xxxxx
xxxxx
xxxxx
volume_backend_name=xxx-Storage
啟動cinder-volume
4.建立型別
 cinder type-create xxx
5.關聯型別
cinder type-key xxx set volume_backend_name=xxx-Storage


[swz@swz ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.26.44.92  netmask 255.255.254.0  broadcast 10.26.45.255
        ether 00:16:3e:00:5f:67  txqueuelen 1000  (Ethernet)
        RX packets 62348  bytes 21135150 (20.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 96817  bytes 7229139 (6.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 47.90.51.58  netmask 255.255.254.0  broadcast 47.90.51.255
        ether 00:16:3e:00:b5:6d  txqueuelen 1000  (Ethernet)
        RX packets 375570  bytes 44939268 (42.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 362047  bytes 24380509 (23.2 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
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        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  c
        

[swz@swz ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         47.90.51.247    0.0.0.0         UG    0      0        0 eth1
10.0.0.0        10.26.45.247    255.0.0.0       UG    0      0        0 eth0
10.26.44.0      0.0.0.0         255.255.254.0   U     0      0        0 eth0
47.90.50.0      0.0.0.0         255.255.254.0   U     0      0        0 eth1
100.64.0.0      10.26.45.247    255.192.0.0     UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.16.0.0      10.26.45.247    255.240.0.0     UG    0      0        0 eth0


openstack network create  --share \
  --provider-physical-network internal \
  --provider-network-type flat internal
  
openstack subnet create --network internal \
  --allocation-pool start=192.168.57.100,end=192.168.57.250 \
  --dns-nameserver 192.168.56.2 --gateway 192.168.57.2 \
  --subnet-range 192.168.57.0/24 internal
  
=======demo  
openstack network create selfservice

openstack subnet create --network selfservice \
  --dns-nameserver 192.168.56.2 --gateway 172.16.1.1 \
  --subnet-range 172.16.1.0/24 selfservice
  
  
========admin
neutron net-update public --router:external

=======demo
openstack router create router
neutron router-interface-add router selfservice
neutron router-gateway-set router public

作業:
   1. 熱遷移  
   2. Cinder使用Glusterfs/Ceph作為後端儲存。

冷遷移

1. 沒有共用儲存 熱遷移。
2. 有共用儲存 

小生產建議:

架構1:控制節點 + 計算節點(FLAT、本地硬碟) 優點:簡單、高效、管理難度低  + 高可用

   測試:
架構2:控制節點 + 計算節點 + 共用儲存(iscsi Glusterfs ceph)分兩種:系統也允許在儲存上  僅資料卷使用儲存
優點:虛擬機器器硬碟自助管理   
缺點:1.儲存網路是瓶頸(需要萬兆網路) 2.單點故障

架構3:控制節點 + 計算節點 + 儲存節點 + 熱遷移
所有機器掛載儲存節點mount

大規模生產
架構4:控制節點 + 計算節點 + VLAN      優點:用的公司多。穩定 確定:網路不靈活
使用三層交換作為閘道器。Neutron使用VLAN。 + GlusterFS

架構5: 控制節點 + 計算節點 + VXLAN   優先:靈活。有浮動IP。 缺點:依賴L3-agent。 需要解決高可用+效能的問題。

控制節點可以做高可用
MySQL叢集 PXC
RabbitMQ 叢集
其它服務:可以主備,可以叢集

LinuxBridge               vs      OpenvSwitch
古老而且穩定,進入核心早         新,功能更多,靈活。QOS

1.OpenStack 升級。
2.使用OpenStack、做公有云
    計算小組   網路小組   儲存小組   計費小組   運維小組  安全小組
    業務小組(備案、工單、xx、xx)

部署cinder控制節點

 

1、完成下面的步驟以建立資料庫:

    • 用資料庫連線使用者端以 root 使用者連線到資料庫伺服器:

      $ mysql -u root -p
      
    • 建立 cinder 資料庫:

      CREATE DATABASE cinder;
      
    • 允許 cinder 資料庫合適的存取許可權:

      GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
        IDENTIFIED BY 'CINDER_DBPASS';
      GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
        IDENTIFIED BY 'CINDER_DBPASS';
      

      用合適的密碼替換 CINDER_DBPASS

    • 退出資料庫使用者端。

 

  1. 獲得 admin 憑證來獲取只有管理員能執行的命令的存取許可權:

    $ . admin-openrc
    
  2. 要建立服務證書,完成這些步驟:

    • 建立一個 cinder 使用者:

      $ openstack user create --domain default --password-prompt cinder
      User Password:123456
      Repeat User Password:
      +-----------+----------------------------------+
      | Field     | Value                            |
      +-----------+----------------------------------+
      | domain_id | e0353a670a9e496da891347c589539e9 |
      | enabled   | True                             |
      | id        | bb279f8ffc444637af38811a5e1f0562 |
      | name      | cinder                           |
      +-----------+----------------------------------+
      
    • 新增 admin 角色到 cinder 使用者上。

      $ openstack role add --project service --user cinder admin

 

  1. 安裝軟體包:

    # yum install openstack-cinder
    
  1. 編輯 /etc/cinder/cinder.conf,同時完成如下動作:

    • 在 [database] 部分,設定資料庫存取:

      [database]
      ...
      connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
      

      用你為塊裝置儲存資料庫選擇的密碼替換 CINDER_DBPASS

    • 在 「[DEFAULT]」 和 「[oslo_messaging_rabbit]」部分,設定 「RabbitMQ」 訊息佇列存取:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

      用你在 「RabbitMQ」 中為 「openstack」 選擇的密碼替換 「RABBIT_PASS」。

    • 在 「[DEFAULT]」 和 「[keystone_authtoken]」 部分,設定認證服務存取:

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = default
      user_domain_name = default
      project_name = service
      username = cinder
      password = CINDER_PASS
      

      將 CINDER_PASS 替換為你在認證服務中為 cinder 使用者選擇的密碼。

       

       
      註解

       

      在 [keystone_authtoken] 中註釋或者刪除其他選項。

    • 在 [DEFAULT 部分,設定``my_ip`` 來使用控制節點的管理介面的IP 地址。

      [DEFAULT]
      ...
      my_ip = 10.0.0.11
      
    • 在 [oslo_concurrency] 部分,設定鎖路徑:

      [oslo_concurrency]
      ...
      lock_path = /var/lib/cinder/tmp
      
  1. 初始化塊裝置服務的資料庫:

    # su -s /bin/sh -c "cinder-manage db sync" cinder

 

設定計算節點以使用塊裝置儲存

  • 編輯檔案 /etc/nova/nova.conf 並新增如下到其中:

    [cinder]
    os_region_name = RegionOne
    

完成安裝

  1. 重啟計算API 服務:

    # systemctl restart openstack-nova-api.service
    
  2. 啟動塊裝置儲存服務,並將其設定為開機自啟:

    # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
    # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

 

最後,建立 cinder 和 cinderv2 服務實體:

$ openstack service create --name cinder \
  --description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | ab3bbbef780845a1a283490d281e7fda |
| name        | cinder                           |
| type        | volume                           |
+-------------+----------------------------------+
$ openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | eb9fd245bdbc414695952e93f29fe3ac |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+

 這裡跟官網建立的順序不一致

 

建立塊裝置儲存服務的 API 入口點:

$ openstack endpoint create --region RegionOne \
  volume public http://controller:8776/v1/%\(tenant_id\)s
  +--------------+-----------------------------------------+
  | Field        | Value                                   |
  +--------------+-----------------------------------------+
  | enabled      | True                                    |
  | id           | 03fa2c90153546c295bf30ca86b1344b        |
  | interface    | public                                  |
  | region       | RegionOne                               |
  | region_id    | RegionOne                               |
  | service_id   | ab3bbbef780845a1a283490d281e7fda        |
  | service_name | cinder                                  |
  | service_type | volume                                  |
  | url          | http://controller:8776/v1/%(tenant_id)s |
  +--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volume internal http://controller:8776/v1/%\(tenant_id\)s
  +--------------+-----------------------------------------+
  | Field        | Value                                   |
  +--------------+-----------------------------------------+
  | enabled      | True                                    |
  | id           | 94f684395d1b41068c70e4ecb11364b2        |
  | interface    | internal                                |
  | region       | RegionOne                               |
  | region_id    | RegionOne                               |
  | service_id   | ab3bbbef780845a1a283490d281e7fda        |
  | service_name | cinder                                  |
  | service_type | volume                                  |
  | url          | http://controller:8776/v1/%(tenant_id)s |
  +--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volume admin http://controller:8776/v1/%\(tenant_id\)s
  +--------------+-----------------------------------------+
  | Field        | Value                                   |
  +--------------+-----------------------------------------+
  | enabled      | True                                    |
  | id           | 4511c28a0f9840c78bacb25f10f62c98        |
  | interface    | admin                                   |
  | region       | RegionOne                               |
  | region_id    | RegionOne                               |
  | service_id   | ab3bbbef780845a1a283490d281e7fda        |
  | service_name | cinder                                  |
  | service_type | volume                                  |
  | url          | http://controller:8776/v1/%(tenant_id)s |
  +--------------+-----------------------------------------+
$ openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| enabled      | True                                    |
| id           | 513e73819e14460fb904163f41ef3759        |
| interface    | public                                  |
| region       | RegionOne                               |
| region_id    | RegionOne                               |
| service_id   | eb9fd245bdbc414695952e93f29fe3ac        |
| service_name | cinderv2                                |
| service_type | volumev2                                |
| url          | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| enabled      | True                                    |
| id           | 6436a8a23d014cfdb69c586eff146a32        |
| interface    | internal                                |
| region       | RegionOne                               |
| region_id    | RegionOne                               |
| service_id   | eb9fd245bdbc414695952e93f29fe3ac        |
| service_name | cinderv2                                |
| service_type | volumev2                                |
| url          | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+

$ openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| enabled      | True                                    |
| id           | e652cf84dd334f359ae9b045a2c91d96        |
| interface    | admin                                   |
| region       | RegionOne                               |
| region_id    | RegionOne                               |
| service_id   | eb9fd245bdbc414695952e93f29fe3ac        |
| service_name | cinderv2                                |
| service_type | volumev2                                |
| url          | http://controller:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------+
註解

塊裝置儲存服務每個服務實體都需要端點。

 

儲存節點部署

https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-storage-install.html

我這裡安裝到控制節點,把控制節點當成cinder的儲存節點

安裝支援的工具包:

  • 安裝 LVM 包:

    # yum install lvm2
    
  • 啟動LVM的metadata服務並且設定該服務隨系統啟動:

    # systemctl enable lvm2-lvmetad.service
    # systemctl start lvm2-lvmetad.service

 

關機新增磁碟

 

 我們可以看到新增的磁碟sdb

 

  1. 建立LVM 物理卷 /dev/sdb

    # pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created
    
  2. 建立 LVM 卷組 cinder-volumes:(vg的名稱不能錯)

    # vgcreate cinder-volumes /dev/sdb
    Volume group "cinder-volumes" successfully created
    

    塊儲存服務會在這個卷組中建立邏輯卷。

[root@controller ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@controller ~]# vgcreate cinder-volumes /dev/sdb
  Volume group "cinder-volumes" successfully created
[root@controller ~]# vgdisplay 
  --- Volume group ---
  VG Name               cinder-volumes
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <20.00 GiB
  PE Size               4.00 MiB
  Total PE              5119
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5119 / <20.00 GiB
  VG UUID               AqHQr0-QFEh-t7s6-T7nu-xUFo-POX8-JTuGIQ
   
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               Z1pOFF-O1om-NCXk-1obF-dnyN-eoJV-56CCg1
   
[root@controller ~]# 

 

只有範例可以存取塊儲存卷組。不過,底層的作業系統管理這些裝置並將其與卷關聯。預設情況下,LVM卷掃描工具會掃描``/dev`` 目錄,查詢包含卷的塊儲存裝置。如果專案在他們的捲上使用LVM,掃描工具檢測到這些卷時會嘗試快取它們,可能會在底層作業系統和專案卷上產生各種問題。您必須重新設定LVM,讓它只掃描包含``cinder-volume``卷組的裝置。編輯``/etc/lvm/lvm.conf``檔案並完成下面的操作:

  • 在``devices``部分,新增一個過濾器,只接受``/dev/sdb``裝置,拒絕其他所有裝置:

    devices {
    ...
    filter = [ "a/sdb/", "r/.*/"]
    

    每個過濾器組中的元素都以``a``開頭,即為 accept,或以 r 開頭,即為**reject**,並且包括一個裝置名稱的正規表示式規則。過濾器組必須以``r/.*/``結束,過濾所有保留裝置。您可以使用 :命令:`vgs -vvvv` 來測試過濾器。

     

     警告
    
    如果您的儲存節點在作業系統磁碟上使用了 LVM,您還必需新增相關的裝置到過濾器中。例如,如果 /dev/sda 裝置包含作業系統:
    
    filter = [ "a/sda/", "a/sdb/", "r/.*/"]
    類似地,如果您的計算節點在作業系統磁碟上使用了 LVM,您也必需修改這些節點上 /etc/lvm/lvm.conf 檔案中的過濾器,將作業系統磁碟包含到過濾器中。例如,如果``/dev/sda`` 裝置包含作業系統:
    
    filter = [ "a/sda/", "r/.*/"]

     

我們這裡部署計算節點,我們這裡應該是用下面這個

filter = [ "a/sda/", "a/sdb/", "r/.*/"]

vim /etc/lvm/lvm.conf

 

安全並設定元件

  1. 安裝軟體包:

    # yum install openstack-cinder targetcli python-keystone
    
  1. 編輯 /etc/cinder/cinder.conf,同時完成如下動作:

    • 在 [database] 部分,設定資料庫存取:

      [database]
      ...
      connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
      

      用你為塊裝置儲存資料庫選擇的密碼替換 CINDER_DBPASS

    • 在 「[DEFAULT]」 和 「[oslo_messaging_rabbit]」部分,設定 「RabbitMQ」 訊息佇列存取:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

      用你在 「RabbitMQ」 中為 「openstack」 選擇的密碼替換 「RABBIT_PASS」。

    • 在 「[DEFAULT]」 和 「[keystone_authtoken]」 部分,設定認證服務存取:

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = default
      user_domain_name = default
      project_name = service
      username = cinder
      password = CINDER_PASS
      

      將 CINDER_PASS 替換為你在認證服務中為 cinder 使用者選擇的密碼。

       

       
      註解

       

      在 [keystone_authtoken] 中註釋或者刪除其他選項。

    • 在 [DEFAULT] 部分,設定 my_ip 選項:

      [DEFAULT]
      ...
      my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      

      將其中的``MANAGEMENT_INTERFACE_IP_ADDRESS``替換為儲存節點上的管理網路介面的IP 地址,例如樣例架構 <overview-example-architectures>中所示的第一臺節點 10.0.0.41 。

    • 在``[lvm]``部分,設定LVM後端以LVM驅動結束,卷組``cinder-volumes`` ,iSCSI 協定和正確的 iSCSI服務:

      [lvm]
      ...
      volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
      volume_group = cinder-volumes
      iscsi_protocol = iscsi
      iscsi_helper = lioadm
      
    • 在 [DEFAULT] 部分,啟用 LVM 後端:

      [DEFAULT]
      ...
      enabled_backends = lvm
      

       

       
      註解

       

      後端名字是任意的。比如,本教學使用驅動的名字作為後端的名字。

    • 在 [DEFAULT] 區域,設定映象服務 API 的位置:

      [DEFAULT]
      ...
      glance_api_servers = http://controller:9292
      
    • 在 [oslo_concurrency] 部分,設定鎖路徑:

      [oslo_concurrency]
      ...
      lock_path = /var/lib/cinder/tmp
      

完成安裝

  • 啟動塊儲存卷服務及其依賴的服務,並將其設定為隨系統啟動:

    # systemctl enable openstack-cinder-volume.service target.service
    # systemctl start openstack-cinder-volume.service target.service

沒有lvm的,我們手動加一個

 

檢視服務狀態

[root@controller ~]# openstack volume service list
+------------------+----------------+------+---------+-------+----------------------------+
| Binary           | Host           | Zone | Status  | State | Updated At                 |
+------------------+----------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller     | nova | enabled | up    | 2023-05-13T15:54:14.000000 |
| cinder-volume    | controller@lvm | nova | enabled | up    | 2023-05-13T15:53:22.000000 |
+------------------+----------------+------+---------+-------+----------------------------+
[root@controller ~]#  

建立雲硬碟並掛載

 

我們可以看到,雲平臺頁面多個一個選單,卷

 

 建立一個G的卷

 報錯了

 

他的密碼錯了,改正,應該是123456才對,cinder.conf

 然後重啟服務

[root@controller ~]# 
[root@controller ~]# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service
[root@controller ~]# systemctl restart openstack-cinder-volume.service target.service
[root@controller ~]# 

此時,我們再建立一個卷,可以成功建立,並且是可用狀態的

 管理連線

 選擇範例

 報錯了

 

 我換了個使用者,換了個範例,然後就可以連線上了

 我們連線上這個範例

 連線上範例後,檢視多了一塊磁碟

 我們格式化磁碟,掛載磁碟到範例中,然後寫入資料到磁碟中。

 如果這個範例出問題或者是其它原因,但是這個資料盤我們還需要,我們需要把這塊資料盤掛載到其它雲範例上去使用,資料還保留著。我們要先在使用這塊資料盤的雲範例上先把它解除安裝下來。

 在雲平臺上面找到這個卷

 點選分離卷

 此時卷又是可用狀態了

 我們給它連線到另一個範例中‘

 卷已經連線上了mcw-test2範例,之前我們用普通使用者machangwei連線mcw-test2範例,但是連線失敗了,可能是許可權問題吧 ,回頭再看看。

 我們連線上mcw-test2這個虛擬機器器

 我們連線到這個範例中,然後檢視剛剛連線上去的卷,也就是給範例新增的磁碟,因為這個磁碟在其它範例上已經格式化過且有資料的,這裡就不需要格式了。這裡只需要掛載,然後就可以看到以前儲存在這塊磁碟中的資料了。

 我們現在是一個系統磁碟,一個資料盤,

 擴充套件卷:

我們看下這個卷

 1G大小

 正在使用,好像沒有擴充套件卷的按鈕

 解除安裝卷

 分離卷

 當卷沒有在使用的時候,就有了擴充套件卷的功能了,現在是1G

 設定新的卷的大小為2G

 擴充套件成功,2G可用的卷

 我們在終端上執行命令再次檢視,可用看到卷的大小是2G

 現在我們用的是iscsi,生產環境建議用後面兩種,測試環境建議用前面兩種

 cinder使用NFS作為後端儲存

 openstack wiki:    https://wiki.openstack.org/wiki/Main_Page

我們先將計算節點2作為另一個儲存節點,然後部署儲存節點

官網參考地址;https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/cinder-storage-install.html

我的地址:https://www.cnblogs.com/machangwei-8/p/17392643.html

官網中,因為我們不用lvm,所以我們不需要上面lvm的步驟,下面這個targetcli也不需要,這個好像是iscsi才用的。

 安裝軟體包

[root@compute2 ~]#  yum install openstack-cinder  python-keystone

[root@compute2 ~]# yum install -y nfs-utils rpcbind

 在計算節點2上設定和啟動nfs伺服器端

[root@compute2 ~]# mkdir -p /data/nfs
[root@compute2 ~]# vim /etc/exports
[root@compute2 ~]# tail /etc/exports
/data/nfs *(rw,sync,no_root_squash)
[root@compute2 ~]# systemctl start rpcbind
[root@compute2 ~]# systemctl start nfs
[root@compute2 ~]# 

將控制節點之前部署好的cinder的設定,複製一份到計算節點,計算節點2作為儲存節點,需要啟動cinder的一些服務

[root@compute2 ~]# cp /etc/cinder/cinder.conf /etc/cinder/cinder.confbak
[root@compute2 ~]# scp -rp controller://etc/cinder/cinder.conf /etc/cinder/
root@controller's password: 
cinder.conf                                                                                                                                                                    100%  171KB   9.0MB/s   00:00    
[root@compute2 ~]# 

我們現在用nfs,不用lvm,所以這裡要把這個設定刪除掉

 我們先看一下驅動的路徑,我們要在cinder設定裡指定nfs的驅動的時候,就是根據這個路徑去設定nfs驅動的類的。

 然後我們新增nfs的設定,建立共用設定,指定掛載點。

[root@compute2 ~]# vim /etc/cinder/cinder.conf
[root@compute2 ~]# tail -4 /etc/cinder/cinder.conf
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = $state_path/mnt
[root@compute2 ~]# vim /etc/cinder/nfs_shares
[root@compute2 ~]# ip a|grep 0.43
    inet 10.0.0.43/24 brd 10.0.0.255 scope global brq2fe697b2-ca
[root@compute2 ~]# cat /etc/cinder/nfs_shares 
10.0.0.43:/data/nfs
[root@compute2 ~]# 

[root@compute2 ~]# showmount -e 10.0.0.43
Export list for 10.0.0.43:
/data/nfs *
[root@compute2 ~]#

將下面修改為nfs,之前開啟的是lvs

 給共用設定授權

 然後啟動服務

[root@compute2 ~]# systemctl enable openstack-cinder-volume.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-volume.service to /usr/lib/systemd/system/openstack-cinder-volume.service.
[root@compute2 ~]# systemctl start openstack-cinder-volume.service 
[root@compute2 ~]# 

我們去控制節點檢視下服務,現在一個是lvm,一個是nfs,那麼能正常使用嘛。現在不行,我們需要建立型別

[root@controller ~]# openstack volume service list
+------------------+----------------+------+---------+-------+----------------------------+
| Binary           | Host           | Zone | Status  | State | Updated At                 |
+------------------+----------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller     | nova | enabled | up    | 2023-05-14T04:58:00.000000 |
| cinder-volume    | controller@lvm | nova | enabled | up    | 2023-05-14T04:58:02.000000 |
| cinder-volume    | compute2@nfs   | nova | enabled | up    | 2023-05-14T04:58:03.000000 |
+------------------+----------------+------+---------+-------+----------------------------+
[root@controller ~]# 

如下,我們可以看到,建立卷的時候,需要指定型別,我們現在有lvm,nfs兩種卷型別,分別是在控制節點和計算節點2上面。因此我們需要建立卷型別,並且將卷型別和後端儲存節點繫結上,這樣我們建立卷的時候,就會根據你選擇的卷型別,然後到對應卷型別的儲存節點去建立這個卷。

 那麼建立了卷型別後,如何將卷型別和後端儲存節點繫結呢。我們之前沒有給儲存節點新增設定volume_backend_name,用這個來指定這個儲存節點是可以建立什麼型別的卷

 

控制節點這個儲存節點上新增設定,指定名稱,重啟volume

[root@controller ~]# vim /etc/cinder/cinder.conf
[root@controller ~]# tail -6 /etc/cinder/cinder.conf
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ISCSI-Storage
[root@controller ~]# systemctl restart openstack-cinder-volume.service 
[root@controller ~]# 

計算節點2這個儲存節點上新增設定,指定名稱,重啟volume

[root@compute2 ~]# vim /etc/cinder/cinder.conf
[root@compute2 ~]# tail -5 /etc/cinder/cinder.conf
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = $state_path/mnt
volume_backend_name = NFS-Storage
[root@compute2 ~]# systemctl restart openstack-cinder-volume.service 
[root@compute2 ~]# 

我們前面在cinder裡面設定了volume_backend_name,然後在控制節點建立這兩個卷型別,將這兩個卷型別和儲存節點設定了了卷後端名稱的繫結起來,這樣就可以了。

[root@controller ~]# openstack volume service list
+------------------+----------------+------+---------+-------+----------------------------+
| Binary           | Host           | Zone | Status  | State | Updated At                 |
+------------------+----------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller     | nova | enabled | up    | 2023-05-14T05:31:31.000000 |
| cinder-volume    | controller@lvm | nova | enabled | up    | 2023-05-14T05:31:25.000000 |
| cinder-volume    | compute2@nfs   | nova | enabled | up    | 2023-05-14T05:31:33.000000 |
+------------------+----------------+------+---------+-------+----------------------------+
[root@controller ~]# 
[root@controller ~]# cinder type-create NFS
+--------------------------------------+------+-------------+-----------+
| ID                                   | Name | Description | Is_Public |
+--------------------------------------+------+-------------+-----------+
| 37a44b36-4439-42f8-9e93-11509bfd041d | NFS  | -           | True      |
+--------------------------------------+------+-------------+-----------+
[root@controller ~]# cinder type-create ISCSI
+--------------------------------------+-------+-------------+-----------+
| ID                                   | Name  | Description | Is_Public |
+--------------------------------------+-------+-------------+-----------+
| 24f0c2d6-125b-4b4c-938c-e5d998c5a863 | ISCSI | -           | True      |
+--------------------------------------+-------+-------------+-----------+
[root@controller ~]# 
[root@controller ~]# cinder type-key NFS set volume_backend_name=NFS-Storage
[root@controller ~]# cinder type-key ISCSI set volume_backend_name=ISCSI-Storage
[root@controller ~]# 
[root@controller ~]# tail -2  /etc/cinder/cinder.conf
iscsi_helper = lioadm
volume_backend_name = ISCSI-Storage
[root@controller ~]# 

我們用普通使用者登入,可以看到,建立卷的時候,已經有了這兩個可選的捲了。

 我們建立兩個卷,分別是iscsi和NFS的卷。建立成功。

 iscsi的

 

 nfs的

 並且nfs儲存節點上,自動將這個目錄掛載起來了

 nfs的卷正常連線到範例上使用

 

總結:

1.cinder後端儲存步驟

1.把儲存準備好。
2.安裝cinder-volume
3.vim /etc/cinder/cinder.conf
[xxx]
volume_driver=xxx
xxxxx
xxxxx
xxxxx
volume_backend_name=xxx-Storage
啟動cinder-volume
4.建立型別
cinder type-create xxx
5.關聯型別
cinder type-key xxx set volume_backend_name=xxx-Storage

實現阿里雲ECS多FLAT網路

我們要給範例建立一個外網一個內網,

 我們修改網路控制節點,如下,宿主機物理網路卡兩個,一個外一個內的

 修改設定,新增網路卡

[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[root@controller ~]# grep interface /etc/neutron/plugins/ml2/linuxbridge_agent.ini
physical_interface_mappings = provider:ens33,internal:ens34
[root@controller ~]# ip a s ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:5c:d3:41 brd ff:ff:ff:ff:ff:ff
[root@controller ~]# ifup ens34
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@controller ~]# ip a s ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:5c:d3:41 brd ff:ff:ff:ff:ff:ff
    inet 172.168.1.41/24 brd 172.168.1.255 scope global ens34
       valid_lft forever preferred_lft forever
    inet6 fe80::c7c4:97e9:a77b:a70b/64 scope link 
       valid_lft forever preferred_lft forever
[root@controller ~]# 

我們看下ml2的設定,之前只有一個,現在上面設定增加了,我們這裡再把新增的名字放到下面

 然後重啟網路

[root@controller ~]# systemctl restart neutron-server.service
[root@controller ~]# systemctl restart neutron-linuxbridge-agent.service

 

我們將計算節點1和2的內網網路卡也啟動起來,並且是可以通控制節點的內網ip的。

[root@compute1 _base]# ifup ens34
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@compute1 _base]# ping 172.168.1.41
PING 172.168.1.41 (172.168.1.41) 56(84) bytes of data.
64 bytes from 172.168.1.41: icmp_seq=1 ttl=64 time=0.773 ms
64 bytes from 172.168.1.41: icmp_seq=2 ttl=64 time=0.395 ms
^C
--- 172.168.1.41 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.395/0.584/0.773/0.189 ms
[root@compute1 _base]# 

計算節點也是那樣修改,但是隻需要改一個檔案就好,

[root@compute1 _base]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[root@compute1 _base]# grep interface /etc/neutron/plugins/ml2/linuxbridge_agent.ini
physical_interface_mappings = provider:ens33,internal:ens34
[root@compute1 _base]# ls /etc/neutron/plugins/ml2/
linuxbridge_agent.ini  linuxbridge_agent.inibak
[root@compute1 _base]# systemctl restart neutron-linuxbridge-agent.service 
[root@compute1 _base]# 

我們上面新增了一個網路設定了,現在先建立一個網路

 我們把這些改了

 改成下面我們要新增的這個

 第一個internal是對映的那個,好像就是組態檔中寫的那個;後面那個internal,是我建立網路,起的網路名稱,這裡起的名字暫且和對映的那個保持一致

neutron net-create --shared --provider:physical_network internal \
  --provider:network_type flat internal

建立網路

[root@controller ~]# openstack network list
+--------------------------------------+------+--------------------------------------+
| ID                                   | Name | Subnets                              |
+--------------------------------------+------+--------------------------------------+
| 2fe697b2-ca93-453f-b0dd-726c7708fc99 | WAN  | 730d0674-13c0-4af1-b3fb-e2741bd7a414 |
+--------------------------------------+------+--------------------------------------+
[root@controller ~]# neutron net-create --shared --provider:physical_network internal \
>   --provider:network_type flat internal
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2023-05-14T06:44:18Z                 |
| description               |                                      |
| id                        | a92ccad9-5319-4564-a164-b364f2b56c3c |
| ipv4_address_scope        |                                      |
| ipv6_address_scope        |                                      |
| mtu                       | 1500                                 |
| name                      | internal                             |
| port_security_enabled     | True                                 |
| project_id                | b29c52befb8448378d99086df5053737     |
| provider:network_type     | flat                                 |
| provider:physical_network | internal                             |
| provider:segmentation_id  |                                      |
| revision_number           | 3                                    |
| router:external           | False                                |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| tenant_id                 | b29c52befb8448378d99086df5053737     |
| updated_at                | 2023-05-14T06:44:18Z                 |
+---------------------------+--------------------------------------+
[root@controller ~]# openstack network list
+--------------------------------------+----------+--------------------------------------+
| ID                                   | Name     | Subnets                              |
+--------------------------------------+----------+--------------------------------------+
| 2fe697b2-ca93-453f-b0dd-726c7708fc99 | WAN      | 730d0674-13c0-4af1-b3fb-e2741bd7a414 |
| a92ccad9-5319-4564-a164-b364f2b56c3c | internal |                                      |
+--------------------------------------+----------+--------------------------------------+
[root@controller ~]# 

在網路上建立一個子網:

$ neutron subnet-create --name provider \
  --allocation-pool start=START_IP_ADDRESS,end=END_IP_ADDRESS \
  --dns-nameserver DNS_RESOLVER --gateway PROVIDER_NETWORK_GATEWAY \
  provider PROVIDER_NETWORK_CIDR

給internel建立子網

[root@controller ~]# openstack network list
+--------------------------------------+----------+--------------------------------------+
| ID                                   | Name     | Subnets                              |
+--------------------------------------+----------+--------------------------------------+
| 2fe697b2-ca93-453f-b0dd-726c7708fc99 | WAN      | 730d0674-13c0-4af1-b3fb-e2741bd7a414 |
| a92ccad9-5319-4564-a164-b364f2b56c3c | internal |                                      |
+--------------------------------------+----------+--------------------------------------+
[root@controller ~]# 
[root@controller ~]# neutron subnet-create --name internal \
>   --allocation-pool start=172.168.1.200,end=172.168.1.250 \
>   --dns-nameserver 172.168.1.254 --gateway 172.168.1.254 \
>   internal 172.168.1.0/24
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new subnet:
+-------------------+----------------------------------------------------+
| Field             | Value                                              |
+-------------------+----------------------------------------------------+
| allocation_pools  | {"start": "172.168.1.200", "end": "172.168.1.250"} |
| cidr              | 172.168.1.0/24                                     |
| created_at        | 2023-05-14T06:52:31Z                               |
| description       |                                                    |
| dns_nameservers   | 172.168.1.254                                      |
| enable_dhcp       | True                                               |
| gateway_ip        | 172.168.1.254                                      |
| host_routes       |                                                    |
| id                | 0b550ad4-b852-4de5-8b1a-80c764c46f3c               |
| ip_version        | 4                                                  |
| ipv6_address_mode |                                                    |
| ipv6_ra_mode      |                                                    |
| name              | internal                                           |
| network_id        | a92ccad9-5319-4564-a164-b364f2b56c3c               |
| project_id        | b29c52befb8448378d99086df5053737                   |
| revision_number   | 2                                                  |
| service_types     |                                                    |
| subnetpool_id     |                                                    |
| tags              |                                                    |
| tenant_id         | b29c52befb8448378d99086df5053737                   |
| updated_at        | 2023-05-14T06:52:31Z                               |
+-------------------+----------------------------------------------------+
[root@controller ~]# openstack network list
+--------------------------------------+----------+--------------------------------------+
| ID                                   | Name     | Subnets                              |
+--------------------------------------+----------+--------------------------------------+
| 2fe697b2-ca93-453f-b0dd-726c7708fc99 | WAN      | 730d0674-13c0-4af1-b3fb-e2741bd7a414 |
| a92ccad9-5319-4564-a164-b364f2b56c3c | internal | 0b550ad4-b852-4de5-8b1a-80c764c46f3c |
+--------------------------------------+----------+--------------------------------------+
[root@controller ~]# 

雲平臺頁面操作,

我們在頁面上檢視網路,可以看到這個新增的內網網路了

 檢視網路拓撲,也能看到內網網路的了

 我們連線到這個範例中

 連上去後檢視,一個網路卡

 硬重啟一下範例

 暫且用admin去硬重啟吧

 已重啟

 重新連線上,沒有啥變化啊

 我們建立一個範例,先新增公網的,再新增內網的

 

我們可以看到,是有兩個網路卡的

 這裡點一下,剛剛是預設的,沒有點,結果上面的映象名稱都沒有,應該是有問題的

 shuangwangka2的範例,我先新增內網網路卡

 感覺eth1有點問題

 不知道怎麼回事,先不管了

 實現阿里雲VPC的SDN網路

https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install.html

控制節點: 

設定服務元件

  • 編輯``/etc/neutron/neutron.conf`` 檔案並完成如下操作:

    • 在 [database] 部分,設定資料庫存取:

      [database]
      ...
      connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
      

      使用你設定的資料庫密碼替換 NEUTRON_DBPASS 。

    • 在``[DEFAULT]``部分,啟用Modular Layer 2 (ML2)外掛,路由服務和重疊的IP地址:

      [DEFAULT]
      ...
      core_plugin = ml2
      service_plugins = router
      allow_overlapping_ips = True
      
    • 在 「[DEFAULT]」 和 「[oslo_messaging_rabbit]」部分,設定 「RabbitMQ」 訊息佇列的連線:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

      用你在RabbitMQ中為``openstack``選擇的密碼替換 「RABBIT_PASS」。

    • 在 「[DEFAULT]」 和 「[keystone_authtoken]」 部分,設定認證服務存取:

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = default
      user_domain_name = default
      project_name = service
      username = neutron
      password = NEUTRON_PASS
      

      將 NEUTRON_PASS 替換為你在認證服務中為 neutron 使用者選擇的密碼。

       

       
      註解

       

      在 [keystone_authtoken] 中註釋或者刪除其他選項。

    • 在``[DEFAULT]``和``[nova]``部分,設定網路服務來通知計算節點的網路拓撲變化:

      [DEFAULT]
      ...
      notify_nova_on_port_status_changes = True
      notify_nova_on_port_data_changes = True
      
      [nova]
      ...
      auth_url = http://controller:35357
      auth_type = password
      project_domain_name = default
      user_domain_name = default
      region_name = RegionOne
      project_name = service
      username = nova
      password = NOVA_PASS
      

      使用你在身份認證服務中設定的``nova`` 使用者的密碼替換``NOVA_PASS``。

    • 在 [oslo_concurrency] 部分,設定鎖路徑:

      [oslo_concurrency]
      ...
      lock_path = /var/lib/neutron/tmp

上面其它的不需要修改了,我們修改一下,之前是空的

 我們設定一個,並新增一個,修改為如下

vim /etc/neutron/neutron.conf

 

設定 Modular Layer 2 (ML2) 外掛

ML2外掛使用Linuxbridge機制來為範例建立layer-2虛擬網路基礎設施

  • 編輯``/etc/neutron/plugins/ml2/ml2_conf.ini``檔案並完成以下操作:

    • 在``[ml2]``部分,啟用flat,VLAN以及VXLAN網路:

      [ml2]
      ...
      type_drivers = flat,vlan,vxlan
      
    • 在``[ml2]``部分,啟用VXLAN私有網路:

      [ml2]
      ...
      tenant_network_types = vxlan
      
    • 在``[ml2]``部分,啟用Linuxbridge和layer-2機制:

      [ml2]
      ...
      mechanism_drivers = linuxbridge,l2population
      

       

       
      警告

       

      在你設定完ML2外掛之後,刪除可能導致資料庫不一致的``type_drivers``項的值。

       

       
      註解

       

      Linuxbridge代理只支援VXLAN覆蓋網路。

    • 在``[ml2]`` 部分,啟用埠安全擴充套件驅動:

      [ml2]
      ...
      extension_drivers = port_security
      
    • 在``[ml2_type_flat]``部分,設定公共虛擬網路為flat網路

      [ml2_type_flat]
      ...
      flat_networks = provider
      
    • 在``[ml2_type_vxlan]``部分,為私有網路設定VXLAN網路識別的網路範圍:

      [ml2_type_vxlan]
      ...
      vni_ranges = 1:1000
      
    • 在 ``[securitygroup]``部分,啟用 ipset 增加安全組規則的高效性:

      [securitygroup]
      ...
      enable_ipset = True

 

修改前:

[DEFAULT]
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2populatio

vim /etc/neutron/plugins/ml2/ml2_conf.ini

 修改後新增一個vxlan,驅動型別還有gre greve的

 租戶網路型別也加上vxlan

 下面找個驅動也加上一個

我們的設定現在如下,根據上面的繼續修改

 修改後

 

設定Linuxbridge代理

Linuxbridge代理為範例建立layer-2虛擬網路並且處理安全組規則。

  • 編輯``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``檔案並且完成以下操作:

    • 在``[linux_bridge]``部分,將公共虛擬網路和公共物理網路介面對應起來:

      [linux_bridge]
      physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
      

      將``PUBLIC_INTERFACE_NAME`` 替換為底層的物理公共網路介面。請檢視:ref:environment-networking for more information。

    • 在``[vxlan]``部分,啟用VXLAN覆蓋網路,設定覆蓋網路的物理網路介面的IP地址,啟用layer-2 population:

      [vxlan]
      enable_vxlan = True
      local_ip = OVERLAY_INTERFACE_IP_ADDRESS
      l2_population = True
      

      將``OVERLAY_INTERFACE_IP_ADDRESS`` 替換為處理覆蓋網路的底層物理網路介面的IP地址。這個範例架構中使用管理網路介面與其他節點建立流量隧道。因此,將``OVERLAY_INTERFACE_IP_ADDRESS``替換為控制節點的管理網路的IP地址。請檢視:ref:environment-networking for more information。

    • 在 ``[securitygroup]``部分,啟用安全組並設定 Linuxbridge iptables firewall driver:

      [securitygroup]
      ...
      enable_security_group = True
      firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 

修改之前

 修改後

 

設定layer-3代理

Layer-3代理為私有虛擬網路提供路由和NAT服務

  • 編輯``/etc/neutron/l3_agent.ini``檔案並完成以下操作:

    • 在``[DEFAULT]``部分,設定Linuxbridge介面驅動和外部網路網橋:

      [DEFAULT]
      ...
      interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
      external_network_bridge =
      

       

       
      註解

       

      ``external_network_bridge``選項特意設定成預設值,這樣就可以在一個代理上允許多種外部網路

註釋一行,改成下面這個

 

設定DHCP代理

The DHCP agent provides DHCP services for virtual networks.

  • 編輯``/etc/neutron/dhcp_agent.ini``檔案並完成下面的操作:

    • 在``[DEFAULT]``部分,設定Linuxbridge驅動介面,DHCP驅動並啟用隔離後設資料,這樣在公共網路上的範例就可以通過網路來存取後設資料

      [DEFAULT]
      ...
      interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
      dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
      enable_isolated_metadata = True

 

這個好像沒有管

 

計算節點修改前,https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-compute-install-option2.html

 修改後

 上面設定錯了,少了個r

 

重啟網路,控制節點:systemctl restart neutron-server.service  neutron-linuxbridge-agent.service neutron-l3-agent.service

計算節點:systemctl restart  neutron-linuxbridge-agent.service

 

建立自服務網路

  1. 在控制節點上,獲得 admin 憑證來獲取只有管理員能執行的命令的存取許可權:

    $ . demo-openrc
    
  2. 建立網路:

    $ neutron net-create selfservice
    Created a new network:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | id                    | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
    | mtu                   | 0                                    |
    | name                  | selfservice                          |
    | port_security_enabled | True                                 |
    | router:external       | False                                |
    | shared                | False                                |
    | status                | ACTIVE                               |
    | subnets               |                                      |
    | tenant_id             | f5b2ccaa75ac413591f12fcaa096aa5c     |
    +-----------------------+--------------------------------------+

     


    非特權使用者一般不能在這個命令制定更多引數。服務會自動從下面的檔案中的資訊選擇引數:

    ml2_conf.ini:
  3. [ml2]
    tenant_network_types = vxlan
    
    [ml2_type_vxlan]
    vni_ranges = 1:1000
    
  4. 在網路上建立一個子網:

    $ neutron subnet-create --name selfservice \
      --dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \
      selfservice SELFSERVICE_NETWORK_CIDR
    

    將 DNS_RESOLVER 替換為DNS解析服務的IP地址。在大多數情況下,你可以從主機``/etc/resolv.conf`` 檔案選擇一個使用。

    將``PRIVATE_NETWORK_GATEWAY`` 替換為私有網路的閘道器,閘道器IP形如 」.1」。

    將 PRIVATE_NETWORK_CIDR 替換為私有網路的子網。你可以使用任意值,但是我們推薦遵從`RFC 1918 <https://tools.ietf.org/html/rfc1918>`_的網路。

  5.  

  6.  

    例子

    自服務網路使用172.16.1.0/24 閘道器172.16.1.1。DHCP服務負責為每個範例從172.16.1.2 到172.16.1.254中分配IP地址。所有範例使用8.8.4.4作為DNS。

    $ neutron subnet-create --name selfservice \
      --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \
      selfservice 172.16.1.0/24
    Created a new subnet:
    +-------------------+------------------------------------------------+
    | Field             | Value                                          |
    +-------------------+------------------------------------------------+
    | allocation_pools  | {"start": "172.16.1.2", "end": "172.16.1.254"} |
    | cidr              | 172.16.1.0/24                                  |
    | dns_nameservers   | 8.8.4.4                                        |
    | enable_dhcp       | True                                           |
    | gateway_ip        | 172.16.1.1                                     |
    | host_routes       |                                                |
    | id                | 3482f524-8bff-4871-80d4-5774c2730728           |
    | ip_version        | 4                                              |
    | ipv6_address_mode |                                                |
    | ipv6_ra_mode      |                                                |
    | name              | selfservice                                    |
    | network_id        | 7c6f9b37-76b4-463e-98d8-27e5686ed083           |
    | subnetpool_id     |                                                |
    | tenant_id         | f5b2ccaa75ac413591f12fcaa096aa5c               |
    +-------------------+------------------------------------------------+
    

建立路由

私有網路通過虛擬路由來連線到公有網路,以雙向NAT最為典型。每個路由包含至少一個連線到私有網路的介面以及一個連線到公有網路的閘道器的介面

公有提供網路必須包括 router: external``選項,用來使路由連線到外部網路,比如網際網路。``admin``或者其他許可權使用者在網路建立時必須包括這個選項,也可以之後在新增。在這個環境裡,我們把``public``公有網路設定成 ``router: external

  1. 在控制節點上,載入 admin 憑證來獲取管理員能執行的命令存取許可權:

    $ . admin-openrc
    
  2. 新增’ router:external ‘ 到’ provider’ 網路

    $ neutron net-update provider --router:external
    Updated network: provider
    
  3. 載入 demo 證書獲得使用者能執行的命令存取許可權:

    $ . demo-openrc
    
  4. 建立路由:

    $ neutron router-create router
    Created a new router:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | external_gateway_info |                                      |
    | id                    | 89dd2083-a160-4d75-ab3a-14239f01ea0b |
    | name                  | router                               |
    | routes                |                                      |
    | status                | ACTIVE                               |
    | tenant_id             | f5b2ccaa75ac413591f12fcaa096aa5c     |
    +-----------------------+--------------------------------------+
    
  5. 給路由器新增一個私網子網的介面:

    $ neutron router-interface-add router selfservice
    Added interface bff6605d-824c-41f9-b744-21d128fc86e1 to router router.
    
  6. 給路由器設定公有網路的閘道器:

    $ neutron router-gateway-set router provider
    Set gateway for router router

 新增’ router:external ‘ 到’ provider’ 網路

 建立路由

 給路由器新增一個私網子網的介面:

 給路由器設定公有網路的閘道器:

 網路拓撲中,中間這個是我們剛剛建立的那些,是做vpc用的網路

 我們給dashboard設定改下,先備份一下

[root@compute1 _base]# vim /etc/openstack-dashboard/local_settings
[root@compute1 _base]# cp /etc/openstack-dashboard/local_settings /etc/openstack-dashboard/local_settingsbak2
[root@compute1 _base]# 

 操作前

 全都改成True了,有的我們現在用不到,但是也不會報錯,之前是因為不是vxlan,好像是會報錯的,是不支援的。

 然後重啟服務

[root@compute1 _base]# systemctl restart httpd.service 

雲平臺頁面使用vxlan網路建立範例;檢視網路資訊

否,不建立新卷

 網路選擇私有網路,

 我們可以看到,三個網路,建立出來的,這裡是不一樣的。現在這個是vxlan網路建立出來的,好像是可以多種網路在雲平臺中共存

 

 

 

 .5就是我們剛剛建立的雲範例用的ip

 這個vxlan網路的範例,該如何登入進去呢

 控制節點試了下,網段是不通的

 目前的想法是,找個找個範例

 找到它的宿主機和它的範例名稱

 然後到它的宿主機,我們登入上去這個範例,可以看到它就是這個ip的,登入是對的

 我們再建立一臺範例2

 然後在範例1中,網路是能通的

浮動ip

 我們再看下,vxlan網路的範例,是有繫結浮動ip的這個功能的

 我們看下選單,有了vxlan的網路後,也是有了浮動ip的選單的。路由選單,好像也是這之後新增的

 先看下路由

 我們看下110這個外部閘道器,是wan這個網路上,當時建立vxlan的網路的時候,某個引數就是指定的這個網路建立的。

 繫結一個浮動ip

 

 繫結浮動ip成功

 我們根據浮動ip,直接就能從控制節點免密登入上去,並且範例中是能通外網的,因為浮動ip是通外網的,

 我們看下,這個dns伺服器好像是谷歌的,百度解析出來多個ip.

 我們再來看下,這個.5的範例,通過路由連線到wan,這個算是公網的外部網路上,

 openstack架構