檢查服務,檢視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]>
我們可以看的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 <maxk@qualcomm.com> [ 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-devel@redhat.com [ 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 ~]#
我們可以看到,控制節點能免密連線到計算節點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
-
退出資料庫客戶端。
-
-
獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權:
$ . admin-openrc
-
要建立服務證照,完成這些步驟:
-
建立一個 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
-
-
安裝軟體包:
# yum install openstack-cinder
-
編輯 /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
-
-
初始化塊裝置服務的資料庫:
# su -s /bin/sh -c "cinder-manage db sync" cinder
配置計算節點以使用塊裝置儲存¶
-
編輯檔案 /etc/nova/nova.conf 並新增如下到其中:
[cinder] os_region_name = RegionOne
完成安裝¶
-
重啟計算API 服務:
# systemctl restart openstack-nova-api.service
-
啟動塊裝置儲存服務,並將其配置為開機自啟:
# 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
-
建立LVM 物理卷 /dev/sdb:
# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created
-
建立 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
安全並配置元件¶
-
安裝軟體包:
# yum install openstack-cinder targetcli python-keystone
-
編輯 /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#_label6
官網中,因為我們不用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 =
-
註釋一行,改成下面這個
配置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
建立自服務網路¶
-
在控制節點上,獲得 admin 憑證來獲取只有管理員能執行的命令的訪問許可權:
$ . demo-openrc
-
建立網路:
$ 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: -
[ml2] tenant_network_types = vxlan [ml2_type_vxlan] vni_ranges = 1:1000
-
在網路上建立一個子網:
$ 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>`_的網路。
-
-
例子
自服務網路使用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。
-
在控制節點上,載入 admin 憑證來獲取管理員能執行的命令訪問許可權:
$ . admin-openrc
-
新增’ router:external ‘ 到’ provider’ 網路
$ neutron net-update provider --router:external Updated network: provider
-
載入 demo 證照獲得使用者能執行的命令訪問許可權:
$ . demo-openrc
-
建立路由:
$ 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 | +-----------------------+--------------------------------------+
-
給路由器新增一個私網子網的介面:
$ neutron router-interface-add router selfservice Added interface bff6605d-824c-41f9-b744-21d128fc86e1 to router router.
-
給路由器設定公有網路的閘道器:
$ 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架構