主頁 > 作業系統 > 云計算管理平臺之OpenStack啟動虛擬機實體

云計算管理平臺之OpenStack啟動虛擬機實體

2020-11-01 15:48:27 作業系統

  在前邊的博客中,我們主要聊了下openstack的基礎環境、核心服務(認證服務keystone/鏡像服務glance/計算服務nova/網路服務neutron)的安裝配置;回顧請查看前邊的博客;今天我們主要來聊一聊基于前邊安裝配置的服務來啟動一個虛擬機實體;

  我們知道在openstack中要啟動一個虛擬機實體,通常會經過這樣幾步,第一步我們要有一個用戶登錄到openstack上,進行創建虛擬機的操作,而這一步通常由keystone服務來驗證登錄的用戶,并回傳一個token給用戶,如果keystone驗證成功,則用戶就可以到openstack上進行對應的操作,反之亦然;第二步,用戶在keystone上完成登錄驗證,并拿到keystone給的token后,用戶就可以在openstack上進行創建虛擬機,在創建虛擬機之前,用戶要選擇創建的虛擬機用那個模板進行創建,用那個鏡像來安裝系統,選擇什么網路,安全組策略等等;這些都必須事先創建好;用戶選擇好必要的組件后;用戶就可以把創建虛擬機的需求發送給openstack 控制節點,由openstack的控制節點間的各服務呼叫,最后創建一個虛擬機實體;這里需要強調一點,在openstack上創建虛擬機不能像我們使用kvm-qemu工具創建虛擬機指定要使用的虛擬cpu,記憶體,磁盤等等資訊;在openstack上創建虛擬機,它是通過模板來定義虛擬機的基礎資訊的;專業術語叫flavor;了解了創建虛擬機的大致程序后,我們基于之前配置的環境來跑一個虛擬機實體在openstack上;

  1、創建模板

  在控制節點上匯出admin環境變數,創建flavor

[root@node01 ~]# source admin.sh 
[root@node01 ~]# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
+----------------------------+---------+
| Field                      | Value   |
+----------------------------+---------+
| OS-FLV-DISABLED:disabled   | False   |
| OS-FLV-EXT-DATA:ephemeral  | 0       |
| disk                       | 1       |
| id                         | 0       |
| name                       | m1.nano |
| os-flavor-access:is_public | True    |
| properties                 |         |
| ram                        | 64      |
| rxtx_factor                | 1.0     |
| swap                       |         |
| vcpus                      | 1       |
+----------------------------+---------+
[root@node01 ~]#

  匯出demo用戶環境變數,創建一個keypair

[root@node01 ~]# source demo.sh 
[root@node01 ~]# ssh-keygen -q -N ""
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
[root@node01 ~]# openstack keypair create --public-key ~/.ssh/id_rsa.pub demo_key
+-------------+-------------------------------------------------+
| Field       | Value                                           |
+-------------+-------------------------------------------------+
| fingerprint | ed:28:2f:00:14:3d:f0:80:6d:0a:0c:ca:41:60:f9:e1 |
| name        | demo_key                                        |
| user_id     | 5453d68782a34429a7dab7da9c51f0d9                |
+-------------+-------------------------------------------------+
[root@node01 ~]# 

  列出安全組

[root@node01 ~]# openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                   | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| 06b13f55-8beb-48d4-9994-490acc5488cf | default | Default security group | 1a918887f38a42c28f9d0d3774f34b16 | []   |
+--------------------------------------+---------+------------------------+----------------------------------+------+
[root@node01 ~]# 

  查看default安全組中的規則

[root@node01 ~]# openstack security group rule list
+--------------------------------------+-------------+----------+------------+--------------------------------------+--------------------------------------+
| ID                                   | IP Protocol | IP Range | Port Range | Remote Security Group                | Security Group                       |
+--------------------------------------+-------------+----------+------------+--------------------------------------+--------------------------------------+
| 361377d6-c836-416f-a00b-245d4f62baf2 | None        | None     |            | 06b13f55-8beb-48d4-9994-490acc5488cf | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 65618465-214b-49ae-8516-888380a0475c | None        | None     |            | 06b13f55-8beb-48d4-9994-490acc5488cf | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 72796899-293a-40fc-ba1a-4d67f0009af9 | None        | None     |            | None                                 | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 870614db-372d-4f10-8b81-71b473f586ad | None        | None     |            | None                                 | 06b13f55-8beb-48d4-9994-490acc5488cf |
+--------------------------------------+-------------+----------+------------+--------------------------------------+--------------------------------------+
[root@node01 ~]# 

  提示:openstack上的安全組我們可以理解為一個虛擬的防火墻,里面的rule我們可以理解為iptabels規則;從上面查看default安全組中的規則來看,它默認是禁止任何ip任何協議連接內部虛擬機;這很顯然不符合我們需求,至少我們應該把ssh埠開放出去;

  添加開放ssh埠的rule到default安全組中

[root@node01 ~]# openstack security group rule create --proto tcp --dst-port 22 default
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | 2020-10-31T09:12:25Z                 |
| description       |                                      |
| direction         | ingress                              |
| ether_type        | IPv4                                 |
| id                | 703d962b-7321-4103-be77-4f1383f6d97d |
| name              | None                                 |
| port_range_max    | 22                                   |
| port_range_min    | 22                                   |
| project_id        | 1a918887f38a42c28f9d0d3774f34b16     |
| protocol          | tcp                                  |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | 0                                    |
| security_group_id | 06b13f55-8beb-48d4-9994-490acc5488cf |
| updated_at        | 2020-10-31T09:12:25Z                 |
+-------------------+--------------------------------------+
[root@node01 ~]# 

  提示:這里創建安全組規則還是使用demo用戶的環境變數;

  添加開放icmp協議rule到default安全組中

[root@node01 ~]# openstack security group rule create --proto icmp default
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| created_at        | 2020-10-31T09:14:29Z                 |
| description       |                                      |
| direction         | ingress                              |
| ether_type        | IPv4                                 |
| id                | f00b068c-fe94-4aa5-af81-83e6d94c6ec4 |
| name              | None                                 |
| port_range_max    | None                                 |
| port_range_min    | None                                 |
| project_id        | 1a918887f38a42c28f9d0d3774f34b16     |
| protocol          | icmp                                 |
| remote_group_id   | None                                 |
| remote_ip_prefix  | 0.0.0.0/0                            |
| revision_number   | 0                                    |
| security_group_id | 06b13f55-8beb-48d4-9994-490acc5488cf |
| updated_at        | 2020-10-31T09:14:29Z                 |
+-------------------+--------------------------------------+
[root@node01 ~]# 

  提示:這一步不是必須,我們這里添加icmp到default安全組是方便后面測驗用;

  驗證:查看default安全組中的規則,看看我們添加到規則是否都添加上了?

[root@node01 ~]# openstack security group rule list
+--------------------------------------+-------------+-----------+------------+--------------------------------------+--------------------------------------+
| ID                                   | IP Protocol | IP Range  | Port Range | Remote Security Group                | Security Group                       |
+--------------------------------------+-------------+-----------+------------+--------------------------------------+--------------------------------------+
| 361377d6-c836-416f-a00b-245d4f62baf2 | None        | None      |            | 06b13f55-8beb-48d4-9994-490acc5488cf | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 65618465-214b-49ae-8516-888380a0475c | None        | None      |            | 06b13f55-8beb-48d4-9994-490acc5488cf | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 703d962b-7321-4103-be77-4f1383f6d97d | tcp         | 0.0.0.0/0 | 22:22      | None                                 | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 72796899-293a-40fc-ba1a-4d67f0009af9 | None        | None      |            | None                                 | 06b13f55-8beb-48d4-9994-490acc5488cf |
| 870614db-372d-4f10-8b81-71b473f586ad | None        | None      |            | None                                 | 06b13f55-8beb-48d4-9994-490acc5488cf |
| f00b068c-fe94-4aa5-af81-83e6d94c6ec4 | icmp        | 0.0.0.0/0 |            | None                                 | 06b13f55-8beb-48d4-9994-490acc5488cf |
+--------------------------------------+-------------+-----------+------------+--------------------------------------+--------------------------------------+
[root@node01 ~]#

  提示:可以看到default安全組里多了兩條rule;

  2、基于provider network創建虛擬機實體

  在控制節點匯出demo用戶的環境變數,驗證是否有可用模板?

[root@node01 ~]# source demo.sh 
[root@node01 ~]# openstack flavor list
+----+---------+-----+------+-----------+-------+-----------+
| ID | Name    | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+---------+-----+------+-----------+-------+-----------+
| 0  | m1.nano |  64 |    1 |         0 |     1 | True      |
+----+---------+-----+------+-----------+-------+-----------+
[root@node01 ~]# 

  驗證是否有可用鏡像?

[root@node01 ~]# openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 94dd2ba0-1736-4307-865d-7cb86b85d32e | cirros | active |
+--------------------------------------+--------+--------+
[root@node01 ~]#

  驗證是否有安全組?

[root@node01 ~]# openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                   | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| 06b13f55-8beb-48d4-9994-490acc5488cf | default | Default security group | 1a918887f38a42c28f9d0d3774f34b16 | []   |
+--------------------------------------+---------+------------------------+----------------------------------+------+
[root@node01 ~]# 

  驗證是否有可用網路?

[root@node01 ~]# openstack network list

[root@node01 ~]# 

  提示:這里顯示為空,表示沒有任何可用網路;

  創建provider network

  在控制節點匯出admin用戶的環境變數,創建provider network

[root@node01 ~]# source admin.sh 
[root@node01 ~]# openstack network create  --share --external \
>   --provider-physical-network provider \
>   --provider-network-type flat provider-net
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2020-10-31T09:27:26Z                 |
| description               |                                      |
| dns_domain                | None                                 |
| id                        | d4732915-a968-499d-b34b-00a6fa4c401d |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | False                                |
| is_vlan_transparent       | None                                 |
| mtu                       | 1500                                 |
| name                      | provider-net                         |
| port_security_enabled     | True                                 |
| project_id                | b4e56eeb160948c581e98d685133d19a     |
| provider:network_type     | flat                                 |
| provider:physical_network | provider                             |
| provider:segmentation_id  | None                                 |
| qos_policy_id             | None                                 |
| revision_number           | 1                                    |
| router:external           | External                             |
| segments                  | None                                 |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| updated_at                | 2020-10-31T09:27:26Z                 |
+---------------------------+--------------------------------------+
[root@node01 ~]# 

  提示:--share表示創建一個共享網路(橋接網路),--external表示創建一個外部的網路,如果希望創建的是內部網路,可以使用--internal選項來指明即可;--provider-network-type flat表示創建的網路型別為平面網路;最后是給我們創建的網路起一個名稱叫provider-net;這里需要注意一點,--provider-physical-network這個選項的值要和我們在配置neutron服務時,在ml2_conf.ini檔案中【ml2_type_flat】配置段中的flat_networks 的值保持一致;如下所示

  提示:/etc/neutron/plugins/ml2/ml2_conf.ini 這個組態檔中的【ml2_type_flat】配置段中的flat_networks的值要和/etc/neutron/plugins/ml2/linuxbridge_agent.ini組態檔中的【linux_bridge】配置段中的physical_interface_mappings中的provider名稱保持一致;如下所示

  提示:以上兩個組態檔中標記的部分都需要同這里創建網路時指定的--provider-physical-network 選項的值保持一致;

  創建子網

[root@node01 ~]# openstack subnet create --network provider-net \
>   --allocation-pool start=192.168.0.100,end=192.168.0.150 \
>   --dns-nameserver 61.139.2.69 --gateway 192.168.0.1 \
>   --subnet-range 192.168.0.0/24 provider-net-sub
+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| allocation_pools  | 192.168.0.100-192.168.0.150          |
| cidr              | 192.168.0.0/24                       |
| created_at        | 2020-10-31T09:48:35Z                 |
| description       |                                      |
| dns_nameservers   | 61.139.2.69                          |
| enable_dhcp       | True                                 |
| gateway_ip        | 192.168.0.1                          |
| host_routes       |                                      |
| id                | 08341b97-47d0-4c81-bb04-385f36c6b609 |
| ip_version        | 4                                    |
| ipv6_address_mode | None                                 |
| ipv6_ra_mode      | None                                 |
| name              | provider-net-sub                     |
| network_id        | d4732915-a968-499d-b34b-00a6fa4c401d |
| project_id        | b4e56eeb160948c581e98d685133d19a     |
| revision_number   | 0                                    |
| segment_id        | None                                 |
| service_types     |                                      |
| subnetpool_id     | None                                 |
| tags              |                                      |
| updated_at        | 2020-10-31T09:48:35Z                 |
+-------------------+--------------------------------------+
[root@node01 ~]# 

  提示:--network使用來指定使用那個網路來創建子網,或者說給那個網路創建子網,這個名稱要和我們創建網路時給的名稱保持一致;這里需要說明一點,provider network是橋接到物理網卡上,所以這里的子網要根據你物理網路來劃分子網;

  驗證:匯出demo環境變數,看看demo用戶是否有可用網路?

[root@node01 ~]# source demo.sh 
[root@node01 ~]# openstack network list
+--------------------------------------+--------------+--------------------------------------+
| ID                                   | Name         | Subnets                              |
+--------------------------------------+--------------+--------------------------------------+
| d4732915-a968-499d-b34b-00a6fa4c401d | provider-net | 08341b97-47d0-4c81-bb04-385f36c6b609 |
+--------------------------------------+--------------+--------------------------------------+
[root@node01 ~]# 

  創建虛擬機

[root@node01 ~]# openstack server create --flavor m1.nano --image cirros \
>   --nic net-id=d4732915-a968-499d-b34b-00a6fa4c401d --security-group default \
>   --key-name demo_key demo_vm1
+-----------------------------+-----------------------------------------------+
| Field                       | Value                                         |
+-----------------------------+-----------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                        |
| OS-EXT-AZ:availability_zone |                                               |
| OS-EXT-STS:power_state      | NOSTATE                                       |
| OS-EXT-STS:task_state       | scheduling                                    |
| OS-EXT-STS:vm_state         | building                                      |
| OS-SRV-USG:launched_at      | None                                          |
| OS-SRV-USG:terminated_at    | None                                          |
| accessIPv4                  |                                               |
| accessIPv6                  |                                               |
| addresses                   |                                               |
| adminPass                   | kCjHs82pTgRp                                  |
| config_drive                |                                               |
| created                     | 2020-10-31T09:55:13Z                          |
| flavor                      | m1.nano (0)                                   |
| hostId                      |                                               |
| id                          | a9f76200-0636-48ab-9eda-69526dab0653          |
| image                       | cirros (94dd2ba0-1736-4307-865d-7cb86b85d32e) |
| key_name                    | demo_key                                      |
| name                        | demo_vm1                                      |
| progress                    | 0                                             |
| project_id                  | 1a918887f38a42c28f9d0d3774f34b16              |
| properties                  |                                               |
| security_groups             | name='06b13f55-8beb-48d4-9994-490acc5488cf'   |
| status                      | BUILD                                         |
| updated                     | 2020-10-31T09:55:13Z                          |
| user_id                     | 5453d68782a34429a7dab7da9c51f0d9              |
| volumes_attached            |                                               |
+-----------------------------+-----------------------------------------------+
[root@node01 ~]# 

  查看虛擬機狀態

[root@node01 ~]# openstack server list 
+--------------------------------------+----------+--------+----------------------------+--------+---------+
| ID                                   | Name     | Status | Networks                   | Image  | Flavor  |
+--------------------------------------+----------+--------+----------------------------+--------+---------+
| a9f76200-0636-48ab-9eda-69526dab0653 | demo_vm1 | ACTIVE | provider-net=192.168.0.103 | cirros | m1.nano |
+--------------------------------------+----------+--------+----------------------------+--------+---------+
[root@node01 ~]#

  提示:可以看到demo_vm1處于active狀態,使用的網路上provicder-net,ip地址為192.168.0.103,使用的鏡像是cirros鏡像,使用的模板是m1.nano;

  驗證:在計算節點使用virsh命令看看是否能夠看到啟動的虛擬機?

[root@node03 ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     instance-00000001              running

[root@node03 ~]# 

  提示:在計算節點上用virsh命令查看虛擬機,它有它自己的命名;從上面的命令結果可以看到,在計算節點上有一個虛擬機實體處于running狀態;

  驗證:使用其他主機ping虛擬機的ip地址,看看是否能夠ping通?

[root@node02 ~]# ping 192.168.0.103
PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data.
64 bytes from 192.168.0.103: icmp_seq=1 ttl=64 time=7.14 ms
64 bytes from 192.168.0.103: icmp_seq=2 ttl=64 time=1.92 ms
64 bytes from 192.168.0.103: icmp_seq=3 ttl=64 time=0.905 ms
^C
--- 192.168.0.103 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.905/3.325/7.148/2.735 ms
[root@node02 ~]# 

  查看虛擬機實體的vnc地址

[root@node01 ~]# openstack console url show demo_vm1
+-------+-------------------------------------------------------------------------------------------+
| Field | Value                                                                                     |
+-------+-------------------------------------------------------------------------------------------+
| type  | novnc                                                                                     |
| url   | http://controller:6080/vnc_auto.html?path=%3Ftoken%3Dbe38cbc9-7742-41b4-aef4-2d94ea510ca8 |
+-------+-------------------------------------------------------------------------------------------+
[root@node01 ~]# 

  使用瀏覽器訪問上述命令回傳的url,看看是否能夠訪問到對應虛擬機的vnc控制臺?

  提示:使用windows訪問,需要在windows上對controller做地址決議;

  驗證:登錄虛擬機系統,看看虛擬機是否可正常訪問外部網路?

  提示:可以看到使用虛擬機ping外部網路能夠正常ping通,并且虛擬機獲取到地址和我們宿主機在同一網段中;說明我們基于provider network啟動的虛擬機實體運行正常;

  驗證:使用控制節點 用ssh連接虛擬機,看看是否是免密登錄?

[root@node01 ~]# ssh [email protected]
The authenticity of host '192.168.0.103 (192.168.0.103)' can't be established.
ECDSA key fingerprint is SHA256:NnU0otuUa4VYObeLL4BmFMdHEvgsdvMzZadGnP/xcW4.
ECDSA key fingerprint is MD5:e3:b5:be:67:99:cb:12:f4:3f:dd:ad:af:2c:86:7d:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.103' (ECDSA) to the list of known hosts.
$ sudo su -
# ifconfig
eth0      Link encap:Ethernet  HWaddr FA:16:3E:03:80:17  
          inet addr:192.168.0.103  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe03:8017/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:173 errors:0 dropped:0 overruns:0 frame:0
          TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20633 (20.1 KiB)  TX bytes:17495 (17.0 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

# exit
$ exit
Connection to 192.168.0.103 closed.
[root@node01 ~]# 

  提示:在控制節點使用ssh命令能夠免密登錄到虛擬機,是因為在控制節點上有對應虛擬機的密鑰對,在創建虛擬機時我們創建的密鑰對會通過openstack把密鑰注入到虛擬機里;從上面的驗證程序也說明了我們在default安全組添加的放行ssh 22埠也是生效了;到此基于provider network啟動一個虛擬機實體就完成了;

  3、基于self-sevice network創建虛擬機實體

   在控制節點匯出demo用戶環境變數,創建self-service network

[root@node01 ~]# source demo.sh 
[root@node01 ~]# openstack network create demo_selfservice_net
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2020-10-31T10:33:55Z                 |
| description               |                                      |
| dns_domain                | None                                 |
| id                        | ad433d82-6fe1-4e51-9fe2-4cfa0fa2040d |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | False                                |
| is_vlan_transparent       | None                                 |
| mtu                       | 1450                                 |
| name                      | demo_selfservice_net                 |
| port_security_enabled     | True                                 |
| project_id                | 1a918887f38a42c28f9d0d3774f34b16     |
| provider:network_type     | None                                 |
| provider:physical_network | None                                 |
| provider:segmentation_id  | None                                 |
| qos_policy_id             | None                                 |
| revision_number           | 1                                    |
| router:external           | Internal                             |
| segments                  | None                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| updated_at                | 2020-10-31T10:33:55Z                 |
+---------------------------+--------------------------------------+
[root@node01 ~]# 

  提示:創建self-service network請確保/etc/neutron/plugins/ml2/ml2_conf.ini組態檔中的【ml2】配置段中配置的tenant_network_types = vxlan,以及【ml2_type_vxlan】配置段中配置的有vxlan的標識范圍,如下所示

  創建子網

[root@node01 ~]# openstack subnet create --network demo_selfservice_net \
>   --dns-nameserver 61.139.2.69 --gateway 10.0.0.254 \
>   --subnet-range 10.0.0.0/8 demo_selfservice_net_sub
+-------------------+-----------------------------------------------+
| Field             | Value                                         |
+-------------------+-----------------------------------------------+
| allocation_pools  | 10.0.0.255-10.255.255.254,10.0.0.1-10.0.0.253 |
| cidr              | 10.0.0.0/8                                    |
| created_at        | 2020-10-31T10:42:52Z                          |
| description       |                                               |
| dns_nameservers   | 61.139.2.69                                   |
| enable_dhcp       | True                                          |
| gateway_ip        | 10.0.0.254                                    |
| host_routes       |                                               |
| id                | 1f2e1eca-d827-4d30-8c33-2ed1a5420d86          |
| ip_version        | 4                                             |
| ipv6_address_mode | None                                          |
| ipv6_ra_mode      | None                                          |
| name              | demo_selfservice_net_sub                      |
| network_id        | ad433d82-6fe1-4e51-9fe2-4cfa0fa2040d          |
| project_id        | 1a918887f38a42c28f9d0d3774f34b16              |
| revision_number   | 0                                             |
| segment_id        | None                                          |
| service_types     |                                               |
| subnetpool_id     | None                                          |
| tags              |                                               |
| updated_at        | 2020-10-31T10:42:52Z                          |
+-------------------+-----------------------------------------------+
[root@node01 ~]# 

  提示:這里我們創建子網就不用admin用戶的環境變數,用demo用戶的環境變數即可;因為self-service network創建的就是一個租戶網路,由租戶自行管理;

  創建虛擬路由器

[root@node01 ~]# openstack router create demo_selfservice_net_sub_router1
+-------------------------+--------------------------------------+
| Field                   | Value                                |
+-------------------------+--------------------------------------+
| admin_state_up          | UP                                   |
| availability_zone_hints |                                      |
| availability_zones      |                                      |
| created_at              | 2020-10-31T10:48:53Z                 |
| description             |                                      |
| external_gateway_info   | None                                 |
| flavor_id               | None                                 |
| id                      | 2c288a0c-c2ce-4bca-b0a8-d795844ea3e6 |
| name                    | demo_selfservice_net_sub_router1     |
| project_id              | 1a918887f38a42c28f9d0d3774f34b16     |
| revision_number         | 1                                    |
| routes                  |                                      |
| status                  | ACTIVE                               |
| tags                    |                                      |
| updated_at              | 2020-10-31T10:48:53Z                 |
+-------------------------+--------------------------------------+
[root@node01 ~]# 

  將上面創建的子網添加到路由器

[root@node01 ~]# openstack router add subnet demo_selfservice_net_sub_router1 demo_selfservice_net_sub
[root@node01 ~]# 

  提示:openstack router add subnet 后面跟虛擬路由啟動名稱(或id)和子網的名稱(或id);

  設定虛擬路由器的上游網路,有點類似設定路由器的wlan口網路

[root@node01 ~]# openstack router set demo_selfservice_net_sub_router1 --external-gateway provider-net
[root@node01 ~]# 

  到此虛擬路由器就創建和配置完成

  驗證:在控制節點匯出admin用戶環境變數,查看網路名稱空間資訊

[root@node01 ~]# source admin.sh 
[root@node01 ~]# ip netns        
qrouter-2c288a0c-c2ce-4bca-b0a8-d795844ea3e6 (id: 2)
qdhcp-ad433d82-6fe1-4e51-9fe2-4cfa0fa2040d (id: 1)
qdhcp-d4732915-a968-499d-b34b-00a6fa4c401d (id: 0)
[root@node01 ~]# 

  提示:能看到一個qrouter名稱空間和兩個qdhcp名稱空間,就表示我們創建的虛擬路由器沒有問題;

  驗證:列出路由器上的埠資訊,看看對應埠是否是我們設定的網路ip地址資訊?

[root@node01 ~]# openstack port list --router demo_selfservice_net_sub_router1
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
| ID                                   | Name | MAC Address       | Fixed IP Addresses                                                           | Status |
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
| 111f53eb-4b47-4f15-8141-f2a500db1103 |      | fa:16:3e:21:af:3c | ip_address='10.0.0.254', subnet_id='1f2e1eca-d827-4d30-8c33-2ed1a5420d86'    | ACTIVE |
| ab87a282-b78b-4193-8873-c9336aaaf04e |      | fa:16:3e:ae:31:03 | ip_address='192.168.0.107', subnet_id='08341b97-47d0-4c81-bb04-385f36c6b609' | ACTIVE |
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
[root@node01 ~]# 

  驗證:查看路由器的網路介面資訊

[root@node01 ~]# ip netns exec qrouter-2c288a0c-c2ce-4bca-b0a8-d795844ea3e6 ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (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  collisions 0

qg-ab87a282-b7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.107  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::f816:3eff:feae:3103  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:ae:31:03  txqueuelen 1000  (Ethernet)
        RX packets 215  bytes 76407 (74.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22  bytes 1452 (1.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

qr-111f53eb-4b: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.0.0.254  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::f816:3eff:fe21:af3c  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:21:af:3c  txqueuelen 1000  (Ethernet)
        RX packets 109  bytes 9850 (9.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 79  bytes 8047 (7.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@node01 ~]# 

  驗證:在其他主機上ping虛擬路由器地址,看看是否能夠ping通?

[root@node03 ~]# ping 192.168.0.107
PING 192.168.0.107 (192.168.0.107) 56(84) bytes of data.
64 bytes from 192.168.0.107: icmp_seq=1 ttl=64 time=1.63 ms
64 bytes from 192.168.0.107: icmp_seq=2 ttl=64 time=1.16 ms
^C
--- 192.168.0.107 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.161/1.397/1.633/0.236 ms
[root@node03 ~]# 

  到此,self-service network就創建完成;

  啟動一個虛擬機實體

  在控制節點匯出demo用戶環境變數,驗證是否有可用的網路?

[root@node01 ~]# source demo.sh 
[root@node01 ~]# openstack network list
+--------------------------------------+----------------------+--------------------------------------+
| ID                                   | Name                 | Subnets                              |
+--------------------------------------+----------------------+--------------------------------------+
| ad433d82-6fe1-4e51-9fe2-4cfa0fa2040d | demo_selfservice_net | 1f2e1eca-d827-4d30-8c33-2ed1a5420d86 |
| d4732915-a968-499d-b34b-00a6fa4c401d | provider-net         | 08341b97-47d0-4c81-bb04-385f36c6b609 |
+--------------------------------------+----------------------+--------------------------------------+
[root@node01 ~]# 

  提示:可以看到現在又多了一個網路;

  創建虛擬機

[root@node01 ~]# openstack server create --flavor m1.nano --image cirros \
>   --nic net-id=ad433d82-6fe1-4e51-9fe2-4cfa0fa2040d --security-group default \
>   --key-name demo_key demo_vm2
+-----------------------------+-----------------------------------------------+
| Field                       | Value                                         |
+-----------------------------+-----------------------------------------------+
| OS-DCF:diskConfig           | MANUAL                                        |
| OS-EXT-AZ:availability_zone |                                               |
| OS-EXT-STS:power_state      | NOSTATE                                       |
| OS-EXT-STS:task_state       | scheduling                                    |
| OS-EXT-STS:vm_state         | building                                      |
| OS-SRV-USG:launched_at      | None                                          |
| OS-SRV-USG:terminated_at    | None                                          |
| accessIPv4                  |                                               |
| accessIPv6                  |                                               |
| addresses                   |                                               |
| adminPass                   | BwSt52FxL4Nk                                  |
| config_drive                |                                               |
| created                     | 2020-10-31T11:10:59Z                          |
| flavor                      | m1.nano (0)                                   |
| hostId                      |                                               |
| id                          | 3f220e22-50ce-4068-9b0b-cd9c07446e6c          |
| image                       | cirros (94dd2ba0-1736-4307-865d-7cb86b85d32e) |
| key_name                    | demo_key                                      |
| name                        | demo_vm2                                      |
| progress                    | 0                                             |
| project_id                  | 1a918887f38a42c28f9d0d3774f34b16              |
| properties                  |                                               |
| security_groups             | name='06b13f55-8beb-48d4-9994-490acc5488cf'   |
| status                      | BUILD                                         |
| updated                     | 2020-10-31T11:10:59Z                          |
| user_id                     | 5453d68782a34429a7dab7da9c51f0d9              |
| volumes_attached            |                                               |
+-----------------------------+-----------------------------------------------+
[root@node01 ~]# 

  查看當前用戶虛擬機串列

[root@node01 ~]# openstack server list
+--------------------------------------+----------+--------+-------------------------------+--------+---------+
| ID                                   | Name     | Status | Networks                      | Image  | Flavor  |
+--------------------------------------+----------+--------+-------------------------------+--------+---------+
| 3f220e22-50ce-4068-9b0b-cd9c07446e6c | demo_vm2 | ACTIVE | demo_selfservice_net=10.0.1.2 | cirros | m1.nano |
| a9f76200-0636-48ab-9eda-69526dab0653 | demo_vm1 | ACTIVE | provider-net=192.168.0.103    | cirros | m1.nano |
+--------------------------------------+----------+--------+-------------------------------+--------+---------+
[root@node01 ~]# 

  提示:可以看到demo_vm2已經運行,并且所使用的ip地址是10.0.1.2;

  查看虛擬機的vnc地址

[root@node01 ~]# openstack console url show demo_vm2
+-------+-------------------------------------------------------------------------------------------+
| Field | Value                                                                                     |
+-------+-------------------------------------------------------------------------------------------+
| type  | novnc                                                                                     |
| url   | http://controller:6080/vnc_auto.html?path=%3Ftoken%3D96aa104b-c603-41ee-aaa5-1e1bbc0e522f |
+-------+-------------------------------------------------------------------------------------------+
[root@node01 ~]#

  驗證:使用瀏覽器訪問,看看是否能夠訪問到對應的虛擬機vnc界面?

  提示:可以看到能夠使用回傳的url訪問到demo_vm2實體;

  驗證:登錄虛擬機系統,查看ip地址是否是我們指定的網路?

  驗證:是否可以和外部網路通信?

  提示:可以看到虛擬機是可以正常和外部網路通信;

  查看虛擬機的路由,看看網關是否是我們指定的網關呢?

  驗證:在控制節點使用ssh連接demo_vm2,看看是否能夠正常連接呢?

  提示:很明顯使用外部網路是無法正常連接到虛擬機;

  使用路由器的網路名稱空間,連接虛擬機

[root@node01 ~]# ip netns
qrouter-2c288a0c-c2ce-4bca-b0a8-d795844ea3e6 (id: 2)
qdhcp-ad433d82-6fe1-4e51-9fe2-4cfa0fa2040d (id: 1)
qdhcp-d4732915-a968-499d-b34b-00a6fa4c401d (id: 0)
[root@node01 ~]# ip netns exec qrouter-2c288a0c-c2ce-4bca-b0a8-d795844ea3e6  ssh [email protected]
The authenticity of host '10.0.1.2 (10.0.1.2)' can't be established.
ECDSA key fingerprint is SHA256:7jOPWda8qBsteCnjUOHFvwq0YLeZzSOh2Sd7qJlMCFU.
ECDSA key fingerprint is MD5:24:ec:79:49:99:62:74:e3:20:ad:ba:94:4c:b5:fb:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.1.2' (ECDSA) to the list of known hosts.
$ sudo su -
# ifconfig
eth0      Link encap:Ethernet  HWaddr FA:16:3E:70:34:63  
          inet addr:10.0.1.2  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::f816:3eff:fe70:3463/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:153 errors:0 dropped:0 overruns:0 frame:0
          TX packets:165 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20183 (19.7 KiB)  TX bytes:17629 (17.2 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

# exit
$ exit
Connection to 10.0.1.2 closed.
[root@node01 ~]# 

  提示:使用虛擬路由器的網路名稱空間是可以正常從外部網路訪問到虛擬機;

  設定nat 一對一系結,實作外部網路能夠正常訪問到虛擬機

  在provider-net網路中創建一個流動ip,用于外部訪問內部虛擬機的流量接入地址

[root@node01 ~]# openstack floating ip create provider-net
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| created_at          | 2020-10-31T12:29:44Z                 |
| description         |                                      |
| dns_domain          | None                                 |
| dns_name            | None                                 |
| fixed_ip_address    | None                                 |
| floating_ip_address | 192.168.0.104                        |
| floating_network_id | d4732915-a968-499d-b34b-00a6fa4c401d |
| id                  | 1bedaaf8-5bdf-492b-8e8b-d009dd62a93f |
| name                | 192.168.0.104                        |
| port_details        | None                                 |
| port_id             | None                                 |
| project_id          | 1a918887f38a42c28f9d0d3774f34b16     |
| qos_policy_id       | None                                 |
| revision_number     | 0                                    |
| router_id           | None                                 |
| status              | DOWN                                 |
| subnet_id           | None                                 |
| tags                | []                                   |
| updated_at          | 2020-10-31T12:29:44Z                 |
+---------------------+--------------------------------------+
[root@node01 ~]# 

  提示:可以看到流動ip地址為192.168.0.104;

  將生成的流動ip地址和虛擬機實體做系結

[root@node01 ~]# openstack server add floating ip demo_vm2 192.168.0.104
[root@node01 ~]#

  再次查看當前用戶虛擬機實體

[root@node01 ~]# openstack server list
+--------------------------------------+----------+--------+----------------------------------------------+--------+---------+
| ID                                   | Name     | Status | Networks                                     | Image  | Flavor  |
+--------------------------------------+----------+--------+----------------------------------------------+--------+---------+
| 3f220e22-50ce-4068-9b0b-cd9c07446e6c | demo_vm2 | ACTIVE | demo_selfservice_net=10.0.1.2, 192.168.0.104 | cirros | m1.nano |
| a9f76200-0636-48ab-9eda-69526dab0653 | demo_vm1 | ACTIVE | provider-net=192.168.0.103                   | cirros | m1.nano |
+--------------------------------------+----------+--------+----------------------------------------------+--------+---------+
[root@node01 ~]# 

  提示:可以看到流動ip已經在demo_vm2的網卡上了;

  驗證:使用其他主機ping192.168.0.104 是否可ping通?

[root@node02 ~]# ping 192.168.0.104
PING 192.168.0.104 (192.168.0.104) 56(84) bytes of data.
64 bytes from 192.168.0.104: icmp_seq=1 ttl=63 time=5.82 ms
64 bytes from 192.168.0.104: icmp_seq=2 ttl=63 time=2.07 ms
64 bytes from 192.168.0.104: icmp_seq=3 ttl=63 time=2.62 ms
^C
--- 192.168.0.104 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 2.071/3.504/5.820/1.653 ms
[root@node02 ~]# 

  驗證:使用外部主機用ssh連接192.168.0.104,看看是否連接至虛擬機?

[root@node01 ~]# ssh [email protected]
The authenticity of host '192.168.0.104 (192.168.0.104)' can't be established.
ECDSA key fingerprint is SHA256:7jOPWda8qBsteCnjUOHFvwq0YLeZzSOh2Sd7qJlMCFU.
ECDSA key fingerprint is MD5:24:ec:79:49:99:62:74:e3:20:ad:ba:94:4c:b5:fb:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.104' (ECDSA) to the list of known hosts.
$ ifconfig
eth0      Link encap:Ethernet  HWaddr FA:16:3E:70:34:63  
          inet addr:10.0.1.2  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::f816:3eff:fe70:3463/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:376 errors:0 dropped:0 overruns:0 frame:0
          TX packets:317 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:46715 (45.6 KiB)  TX bytes:38361 (37.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

$ exit
Connection to 192.168.0.104 closed.
[root@node01 ~]# 

  提示:可以看到現在外部主機通過連接流動ip地址,就可以直接和虛擬機通信;其實在我們給虛擬機添加浮動ip時,它就在虛擬路由器的iptables表中增加了一條DNAT規則,如下所示

  提示:上面的DANT規則說明了為什么外部網路訪問浮動ip地址能夠訪問到內網虛擬機;

  到此基于self-service network 啟動的虛擬機實體配置測驗就完成了;

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/198229.html

標籤:其他

上一篇:printk 流程分析

下一篇:printk 流程分析

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more