CloudStack学习-3
此次試驗主要是CloudStack結合openvswitch
?
背景介紹
?
之所以引入openswitch,是因為如果按照之前的方式,一個網橋占用一個vlan,假如一個zone有20個vlan,那么豈不是每個vlan都要創建一個橋,維護很麻煩
openvswitch是由Nicira Networks主導的,運行在虛擬化平臺(例如KVM,Xen)上的虛擬交換機。在虛擬化平臺上,ovs可以動態變化的斷電提供2層交換功能,很好的控制虛擬網絡中的訪問策略、網絡隔離、流量監控等
它是軟件級別的交換機,可以稱之為軟件定義網絡
ovs的適用范圍:高級網絡,低級網絡,只有1個網卡也可以使用ovs
?
openvswitch官網如下
openswitch支持的平臺
kvm,Xen,openstack,VirtualBox等,雖然沒寫CloudStack,但是也是支持的
點擊download,可以下載源碼包,目前openswitch只提供源碼包下載?
?
?
這里把openvswitch,統一稱為ovs openvswitch是為了替換bridge的一個解決方案,你bridge都沒在master上安裝,它也肯定不會在master上安裝 只在宿主機上安裝?
?
?
?
IP地址規劃
?
3臺宿主機關機,每臺機器再添加2個網卡,最終每個機器3塊網卡
每個host3個網卡,分別模擬管理網,存儲網,客戶網
eth0:管理網,特點是數據量最小,管理宿主機使用
eth1:存儲網,不跨vlan,連接自己存儲的網絡
eth2:客戶網,也叫來賓網絡。用戶端請求。來自公網的訪問
master機器之所以添加客戶網,為了給后面添加資源域時給agent的客戶網當網關用
?
?
?
把這3個虛擬機都關閉了? 添加vnet5和vnet6 都該成下面這種網段?
3個機器都加上,master也加。?
硬件添加完之后,需要配置新網卡的IP
這里容易混淆eth1和eth2 我的經驗是,一次添加一個網卡,重啟,添加第三個,重啟 這里其它網卡不用寫網關了,因為一臺機器只能有1個網關?
?
最終3臺機器的eth1和eth2的ip地址如下。
原先eth0不變,保證3臺機器能互相通過新加的網卡ping通IP
?
?清理之前實驗殘留的信息
?
關閉系統虛擬機
登錄網頁,雖然點擊關閉了。系統虛擬機還會自動啟動,不用理會
?
?
禁用資源域
因為我們要把之前數據清除
?
?
agent上刪除eth0的橋接,兩臺agent都操作
刪除這一行: BRIDGE=cloudbr0 [root@agent1 ~]# brctl show bridge name bridge id STP enabled interfaces cloud0 8000.fe00a9fe00e0 no vnet0 cloudbr0 8000.000c29abd5a9 no eth0vnet1vnet2 virbr0 8000.525400ea877d yes virbr0-nic [root@agent1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=EthernetONBOOT=yes BOOTPROTO=none IPADDR=192.168.145.152 NETMASK=255.255.255.0 GATEWAY=192.168.145.2 DNS1=10.0.1.11 NM_CONTROLLED=no BRIDGE=cloudbr0 IPV6INIT=no USERCTL=no [root@agent1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 [root@agent1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=EthernetONBOOT=yes BOOTPROTO=none IPADDR=192.168.145.152 NETMASK=255.255.255.0 GATEWAY=192.168.145.2 DNS1=10.0.1.11 NM_CONTROLLED=no IPV6INIT=no USERCTL=no [root@agent1 ~]#?
刪除cloudbr0文件
ovs和它是不同的東西,會沖突,agent2同樣操作
[root@agent1 ~]# cd /etc/sysconfig/network-scripts [root@agent1 network-scripts]# ls ifcfg-cloudbr0 ifdown-ipv6 ifup-bnep ifup-routes ifcfg-eth0 ifdown-isdn ifup-eth ifup-sit ifcfg-eth1 ifdown-post ifup-ippp ifup-tunnel ifcfg-eth2 ifdown-ppp ifup-ipv6 ifup-wireless ifcfg-lo ifdown-routes ifup-isdn init.ipv6-global ifdown ifdown-sit ifup-plip net.hotplug ifdown-bnep ifdown-tunnel ifup-plusb network-functions ifdown-eth ifup ifup-post network-functions-ipv6 ifdown-ippp ifup-aliases ifup-ppp [root@agent1 network-scripts]# rm -f ifcfg-cloudbr0 [root@agent1 network-scripts]#?
重啟宿主機
系統虛擬機還在采用reboot讓它把信息清理干凈
[root@agent1 ~]# virsh listId Name State ----------------------------------------------------2 v-2-VM running[root@agent1 ~]# [root@agent2 ~]# virsh listId Name State ----------------------------------------------------2 s-1-VM running[root@agent2 ~]#reboot之后,vnet和cloudbr0都沒有了,(兩臺agent都一樣)
[root@agent1 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:d5:a9 brd ff:ff:ff:ff:ff:ffinet 192.168.145.152/24 brd 192.168.145.255 scope global eth0inet6 fe80::20c:29ff:feab:d5a9/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:d5:b3 brd ff:ff:ff:ff:ff:ffinet 192.168.5.152/24 brd 192.168.5.255 scope global eth1inet6 fe80::20c:29ff:feab:d5b3/64 scope link valid_lft forever preferred_lft forever 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:d5:bd brd ff:ff:ff:ff:ff:ffinet 192.168.6.152/24 brd 192.168.6.255 scope global eth2inet6 fe80::20c:29ff:feab:d5bd/64 scope link valid_lft forever preferred_lft forever 5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 52:54:00:ea:87:7d brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500link/ether 52:54:00:ea:87:7d brd ff:ff:ff:ff:ff:ff [root@agent1 ~]#重啟后下面這個也只存在了自帶的這個橋,(兩臺agent都一樣)
[root@agent1 ~]# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.525400ea877d yes virbr0-nic [root@agent1 ~]#系統虛擬機也消失了(兩臺agent都沒有)
[root@agent1 ~]# virsh list --allId Name State ----------------------------------------------------[root@agent1 ~]#
?
master端停止cloudstack-management服務
[root@master1 ~]# /etc/init.d/cloudstack-management stop Stopping cloudstack-management: [FAILED] [root@master1 ~]# /etc/init.d/cloudstack-management stop Stopping cloudstack-management: [ OK ] [root@master1 ~]# /etc/init.d/cloudstack-management status cloudstack-management is stopped [root@master1 ~]#?
master端清除數據庫
[root@master1 ~]# mysql -uroot -p123456 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.1.73-log Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cloud | | cloud_usage | | mysql | | test | +--------------------+ 5 rows in set (0.00 sec)mysql> drop database cloud; Query OK, 274 rows affected (1.17 sec)mysql> drop database cloud_usage; Query OK, 25 rows affected (0.13 sec)mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec)mysql> exit Bye [root@master1 ~]#
?
agent端安裝ovs包
?
兩臺agent安裝ovs
openvswitch是為了替換bridge的一個解決方案,只在宿主機上安裝,最后2個rpm包就是ovs相關的包
安裝過程如下(兩臺agent上都執行,master上不需要執行)
[root@agent1 tools]# yum install kmod-openvswitch-2.3.1-1.el6.x86_64.rpm openvswitch-2.3.1-1.x86_64.rpm -y Loaded plugins: fastestmirror, security Setting up Install Process Examining kmod-openvswitch-2.3.1-1.el6.x86_64.rpm: kmod-openvswitch-2.3.1-1.el6.x86_64 Marking kmod-openvswitch-2.3.1-1.el6.x86_64.rpm to be installed Loading mirror speeds from cached hostfile epel/metalink | 6.2 kB 00:00 * epel: mirror.premi.st base | 3.7 kB 00:00 centos-gluster37 | 2.9 kB 00:00 epel | 4.3 kB 00:00 epel/primary_db | 5.9 MB 00:24 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 Examining openvswitch-2.3.1-1.x86_64.rpm: openvswitch-2.3.1-1.x86_64 Marking openvswitch-2.3.1-1.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package kmod-openvswitch.x86_64 0:2.3.1-1.el6 will be installed ---> Package openvswitch.x86_64 0:2.3.1-1 will be installed --> Finished Dependency ResolutionDependencies Resolved=================================================================================Package Arch Version Repository Size ================================================================================= Installing:kmod-openvswitch x86_64 2.3.1-1.el6 /kmod-openvswitch-2.3.1-1.el6.x86_64 6.5 Mopenvswitch x86_64 2.3.1-1 /openvswitch-2.3.1-1.x86_64 8.0 MTransaction Summary ================================================================================= Install 2 Package(s)Total size: 14 M Installed size: 14 M Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running TransactionInstalling : kmod-openvswitch-2.3.1-1.el6.x86_64 1/2 Installing : openvswitch-2.3.1-1.x86_64 2/2 Verifying : openvswitch-2.3.1-1.x86_64 1/2 Verifying : kmod-openvswitch-2.3.1-1.el6.x86_64 2/2 Installed:kmod-openvswitch.x86_64 0:2.3.1-1.el6 openvswitch.x86_64 0:2.3.1-1 Complete! [root@agent1 tools]#
?配置 cloudstack-agent 使用 OVS
編輯/etc/cloudstack/agent/agent.properties,添加下列行:
network.bridge.type=openvswitch libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver 第一行表示橋接類型ovs 第二行表示libvirt的驅動路徑,libvirt的網絡驅動是由ovs實現,不是橋接來實現?
下面是原先的配置文件
[root@agent1 tools]# cat /etc/cloudstack/agent/agent.properties #Storage #Mon Feb 13 22:57:04 CST 2017 guest.network.device=cloudbr0 workers=5 private.network.device=cloudbr0 port=8250 resource=com.cloud.hypervisor.kvm.resource.LibvirtComputingResource pod=1 zone=1 hypervisor.type=kvm guid=a8be994b-26bd-39d6-a72f-693f06476873 public.network.device=cloudbr0 cluster=1 local.storage.uuid=cd049ede-7106-45ba-acd4-1f229405f272 domr.scripts.dir=scripts/network/domr/kvm LibvirtComputingResource.id=4 host=192.168.145.151 [root@agent1 tools]#添加上面2行到末尾(agent2同樣操作)
[root@agent1 tools]# cat /etc/cloudstack/agent/agent.properties #Storage #Mon Feb 13 22:57:04 CST 2017 guest.network.device=cloudbr0 workers=5 private.network.device=cloudbr0 port=8250 resource=com.cloud.hypervisor.kvm.resource.LibvirtComputingResource pod=1 zone=1 hypervisor.type=kvm guid=a8be994b-26bd-39d6-a72f-693f06476873 public.network.device=cloudbr0 cluster=1 local.storage.uuid=cd049ede-7106-45ba-acd4-1f229405f272 domr.scripts.dir=scripts/network/domr/kvm LibvirtComputingResource.id=4 host=192.168.145.151 network.bridge.type=openvswitch libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver [root@agent1 tools]#?
啟動服務讓兩臺agent加載openvswitch模塊
[root@agent1 tools]# lsmod | grep openvswitch [root@agent1 tools]# /etc/init.d/openvswitch start /etc/openvswitch/conf.db does not exist ... (warning). Creating empty database /etc/openvswitch/conf.db [ OK ] Starting ovsdb-server [ OK ] Configuring Open vSwitch system IDs [ OK ] Inserting openvswitch module [ OK ] Starting ovs-vswitchd [ OK ] Enabling remote OVSDB managers [ OK ] [root@agent1 tools]# chkconfig openvswitch on [root@agent1 tools]# lsmod | grep openvswitch openvswitch 88783 0 libcrc32c 1246 1 openvswitch [root@agent1 tools]#?
?
agent端glusterfs配置文件優化
修改/etc/glusterfs/glusterd.vol
添加 option rpc-auth-allow-insecure on 這是因為glusterd默認只接受小于1024的端口下發的請求,而Qemu使用了大于1024的端口下發請求,造成gluterd的安全機制默認阻止Qemu的請求
同時也要對要使用的brick
testvol 做如下操作,并重啟該birck
volume set testvol server.allow-insecure on
ps:如果啟動虛擬機失敗,遇到這樣的錯誤:SETVOLUME on remote-host failed: Authentication failed
可以關閉cluster各個brick,umount所有掛載點后執行:
gluster volume set brickname auth.allow 'serverIp like 192.*'
?
修改之后如下
[root@agent1 tools]# cat /etc/glusterfs/glusterd.vol volume managementtype mgmt/glusterdoption working-directory /var/lib/glusterdoption transport-type socket,rdmaoption transport.socket.keepalive-time 10option transport.socket.keepalive-interval 2option transport.socket.read-fail-log offoption ping-timeout 0option event-threads 1 # option base-port 49152 end-volume [root@agent1 tools]# vim /etc/glusterfs/glusterd.vol [root@agent1 tools]# cat /etc/glusterfs/glusterd.vol volume managementtype mgmt/glusterdoption working-directory /var/lib/glusterdoption transport-type socket,rdmaoption transport.socket.keepalive-time 10option transport.socket.keepalive-interval 2option transport.socket.read-fail-log offoption ping-timeout 0option event-threads 1option rpc-auth-allow-insecure on # option base-port 49152 end-volume [root@agent1 tools]#agent2也添加這行參數
[root@agent2 tools]# cat /etc/glusterfs/glusterd.vol volume managementtype mgmt/glusterdoption working-directory /var/lib/glusterdoption transport-type socket,rdmaoption transport.socket.keepalive-time 10option transport.socket.keepalive-interval 2option transport.socket.read-fail-log offoption ping-timeout 0option event-threads 1option rpc-auth-allow-insecure on # option base-port 49152 end-volume [root@agent2 tools]#?
命令行執行安全配置
這個命令,只需要在一個gluster節點上執行即可,它對整個集群生效
[root@agent1 tools]# gluster volume set gv2 server.allow-insecure on volume set: success [root@agent1 tools]#?
gluster節點重啟glusterd服務
改動之后,兩臺agent都要重啟glusterd,注意服務名字,不是下面的glusterfsd,是glusterd服務
假如在這之前我們沒啟動過glusterd服務,可以不用重啟。保險起見,重啟即可
重啟glusterfs對kvm有影響么,幾乎無影響。但是先stop,在start,有影響的
[root@agent2 tools]# /etc/init.d/glusterfsd restart Stopping glusterfsd: [FAILED] [root@agent2 tools]# /etc/init.d/glusterd restart Stopping glusterd: [ OK ] Starting glusterd: [ OK ] [root@agent2 tools]#glusterfs相關部分就操作完了
?
?
配置agent機器上網卡文件結合ovs
?
?
修改agent網卡參數,創建ovs橋cloudbr2,這里網橋名字隨便取,這里出于對應eth2,就寫成了cloudbr2
兩臺agent都操作
刪除IP地址等
[root@agent2 network-scripts]# cat ifcfg-eth2 # Please read /usr/share/doc/initscripts-*/sysconfig.txt # for the documentation of these parameters. DEVICE=eth2 BOOTPROTO=none TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=cloudbr2 ONBOOT=yes USERCTL=no NM_CONTROLLED=no [root@agent2 network-scripts]#修改完之后,兩邊都重啟網絡服務
[root@agent2 network-scripts]# /etc/init.d/network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down interface eth2: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface cloudbr2: [ OK ] Bringing up interface eth0: Determining if ip address 192.168.145.153 is already in use for device eth0...[ OK ] Bringing up interface eth1: Determining if ip address 192.168.5.153 is already in use for device eth1...[ OK ] Bringing up interface eth2: [ OK ] [root@agent2 network-scripts]#查看重啟后的網絡接口信息,多了cloudbr2
[root@agent2 network-scripts]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:95:fa brd ff:ff:ff:ff:ff:ffinet 192.168.145.153/24 brd 192.168.145.255 scope global eth0inet6 fe80::20c:29ff:feab:95fa/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:95:04 brd ff:ff:ff:ff:ff:ffinet 192.168.5.153/24 brd 192.168.5.255 scope global eth1inet6 fe80::20c:29ff:feab:9504/64 scope link valid_lft forever preferred_lft forever 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:95:0e brd ff:ff:ff:ff:ff:ffinet6 fe80::20c:29ff:feab:950e/64 scope link valid_lft forever preferred_lft forever 5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 52:54:00:a1:8e:64 brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500link/ether 52:54:00:a1:8e:64 brd ff:ff:ff:ff:ff:ff 8: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN link/ether b6:34:b6:35:e6:ca brd ff:ff:ff:ff:ff:ff 9: cloudbr2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:0c:29:ab:95:0e brd ff:ff:ff:ff:ff:ffinet6 fe80::4893:c0ff:fe7a:b14e/64 scope link valid_lft forever preferred_lft forever [root@agent2 network-scripts]#查看重啟后兩臺agent的ovs這個虛擬交換機
[root@agent2 network-scripts]# ovs-vsctl show c17bcc03-f6d0-4368-9f41-004598ec7336Bridge "cloudbr2"Port "eth2"Interface "eth2"Port "cloudbr2"Interface "cloudbr2"type: internalovs_version: "2.3.1" [root@agent2 network-scripts]# [root@agent1 network-scripts]# ovs-vsctl show b8d2eae6-27c2-4f94-bb28-81635229141dBridge "cloudbr2"Port "eth2"Interface "eth2"Port "cloudbr2"Interface "cloudbr2"type: internalovs_version: "2.3.1" [root@agent1 network-scripts]#?
?
master端配置
?
建庫建表
執行數據庫初始化操作,導入數據
?
初始化matser配置
數據庫配置完畢后,啟動master,它會做一些初始化的操作
以后不要這么啟動,初始化只執行一次就行了
?
master上導入系統鏡像模板
master上執行下面命令
導入模板。它會把系統模板拷貝到對應路徑下,同時往數據庫里寫記錄。
之前實驗雖然也導入到對應路徑下了,但是我們把數據庫刪除了,記錄不存在了。因此需要重新導入
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \ -m /export/secondary \ -f /tools/systemvm64template-4.6.0-kvm.qcow2.bz2 \ -h kvm -F這個步驟的作用就是把虛擬機模板導入到二級存儲,執行過程如下
[root@master1 ~]# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \ > -m /export/secondary \ > -f /tools/systemvm64template-4.6.0-kvm.qcow2.bz2 \ > -h kvm -F Uncompressing to /usr/share/cloudstack-common/scripts/storage/secondary/fa050b43-3f2e-4dd7-aecc-119ef1851039.qcow2.tmp (type bz2)...could take a long time Moving to /export/secondary/template/tmpl/1/3///fa050b43-3f2e-4dd7-aecc-119ef1851039.qcow2...could take a while Successfully installed system VM template /tools/systemvm64template-4.6.0-kvm.qcow2.bz2 to /export/secondary/template/tmpl/1/3/ [root@master1 ~]#?
登陸master網頁允許agent下載ISO鏡像 下面這里改成允許全網段下載iso 添加ISO模版,就不會出現“connection refused”的錯誤。?
重啟CloudStack-management
[root@master1 ~]# /etc/init.d/cloudstack-management restart Stopping cloudstack-management: [FAILED] Starting cloudstack-management: [ OK ] [root@master1 ~]# /etc/init.d/cloudstack-management restart Stopping cloudstack-management: [ OK ] Starting cloudstack-management: [ OK ] [root@master1 ~]#?
?
添加資源域
?
在操作之前,先把3臺機器停止iptables
[root@master1 ~]# /etc/init.d/iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@master1 ~]#操作之前,還需要確保gluster是OK的
[root@agent1 ~]# gluster volume status Status of volume: gv2 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick agent1:/export/primary 49152 0 Y 27248 Brick agent2:/export/primary 49152 0 Y 27372 NFS Server on localhost 2049 0 Y 27232 Self-heal Daemon on localhost N/A N/A Y 27241 NFS Server on agent2 2049 0 Y 27357 Self-heal Daemon on agent2 N/A N/A Y 27367Task Status of Volume gv2 ------------------------------------------------------------------------------ There are no active volume tasks[root@agent1 ~]#這次選高級和安全組
關于高級網絡和基本網絡的比較
?
10.0.1.11是本地dns服務器
?
?
其余默認
?
把圖標拖到不同的位置,就可以實現分離了 默認是下面,需要修改?
eth0是管理網,橋接到cloudbr0上,cloudbr0會在后面創建
繼續編輯來賓網絡的網卡 這里處于對應eth2這個名字,寫成cloudbr2了。其實可以自定義 寫不對的話,網卡加不上?
存儲的這里不實現,最后結果如下?
預留的給系統虛擬機的。 10個就夠了。現網也可以這么做?
由于本次環境沒有交換機,真實環境要寫真實網關的。這里為了通過,可以拿master網卡IP當成網關,生產環境用交換機真實的網關地址 vlan標簽根據真實的vlan id寫,這里寫個6表示vlan id是6?
root/root01
我們這里用的是glusterfs agent自己本地運行了glusterd服務。就寫127.0.0.1?
二級存儲寫master共享的nfs,其實生產環境也可以試用glusterfs
Failed to add data store: iSCSI needs to have LUN number 這里是軟件bug,點擊取消即可,可以單獨添加存儲?
?
單獨添加主存儲?
添加成功。剛才的問題應該是CloudStack的bug?
繼續添加二級存儲?
完成如下?
把agent2主機加上 現網中推薦先啟動資源域,再添加新的主機,這樣好處在于排查問題方便。?
?
?
主機添加之后的agent1網絡信息
多了cloudbr0和cloudbr2網橋設備
啟動資源域
?
?
沒有報錯,看下網頁這里。看到兩個系統vm在啟動?
啟動資源域之后系統虛擬機運行OK [root@agent2 ~]# virsh listId Name State ----------------------------------------------------2 s-2-VM running3 v-1-VM running[root@agent2 ~]#控制臺這里之所以無法打開 可能就是當時指定的192.168.6.151這個IP是master機器,不是有效的網關
?
?
?
虛擬機啟動后,ovs會創建很多橋
管理網段的橋接到了cloudbr0
guest網段的vnet都橋接到了cloudbr2上
?下面是agent1的橋接信息,之前的bridge-util橋就沒用到,試用的是ovs
[root@agent1 ~]# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.525400ea877d yes virbr0-nic [root@agent1 ~]# ovs-vsctl show b8d2eae6-27c2-4f94-bb28-81635229141dBridge "cloud0"Port "cloud0"Interface "cloud0"type: internalBridge "cloudbr0"Port "eth0"Interface "eth0"Port "cloudbr0"Interface "cloudbr0"type: internalBridge "cloudbr2"Port "eth2"Interface "eth2"Port "cloudbr2"Interface "cloudbr2"type: internalovs_version: "2.3.1" [root@agent1 ~]#下面是agent2上的橋接信息
[root@agent2 ~]# ovs-vsctl show c17bcc03-f6d0-4368-9f41-004598ec7336Bridge "cloudbr2"Port "eth2"Interface "eth2"Port "cloudbr2"Interface "cloudbr2"type: internalPort "vnet2"tag: 6Interface "vnet2"Port "vnet5"tag: 6Interface "vnet5"Bridge "cloud0"Port "vnet0"Interface "vnet0"Port "vnet3"Interface "vnet3"Port "cloud0"Interface "cloud0"type: internalBridge "cloudbr0"Port "eth0"Interface "eth0"Port "vnet1"Interface "vnet1"Port "vnet4"Interface "vnet4"Port "cloudbr0"Interface "cloudbr0"type: internalovs_version: "2.3.1" [root@agent2 ~]#因為系統虛擬機目前都運行在agent2上
所以橋接設備比較多
下面是此時的agent1的網絡設備信息
[root@agent1 ~]# ip ad 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:d5:a9 brd ff:ff:ff:ff:ff:ffinet6 fe80::20c:29ff:feab:d5a9/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:d5:b3 brd ff:ff:ff:ff:ff:ffinet 192.168.5.152/24 brd 192.168.5.255 scope global eth1inet6 fe80::20c:29ff:feab:d5b3/64 scope link valid_lft forever preferred_lft forever 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:ab:d5:bd brd ff:ff:ff:ff:ff:ffinet6 fe80::20c:29ff:feab:d5bd/64 scope link valid_lft forever preferred_lft forever 5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 52:54:00:ea:87:7d brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500link/ether 52:54:00:ea:87:7d brd ff:ff:ff:ff:ff:ff 8: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN link/ether 2e:c0:a6:d1:46:73 brd ff:ff:ff:ff:ff:ff 10: cloudbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:0c:29:ab:d5:a9 brd ff:ff:ff:ff:ff:ffinet 192.168.145.152/24 brd 192.168.145.255 scope global cloudbr0inet6 fe80::448a:8cff:fe77:e140/64 scope link valid_lft forever preferred_lft forever 11: cloudbr2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:0c:29:ab:d5:bd brd ff:ff:ff:ff:ff:ffinet6 fe80::30c6:80ff:fe79:a149/64 scope link valid_lft forever preferred_lft forever 13: cloud0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether c6:9e:e5:49:12:4e brd ff:ff:ff:ff:ff:ffinet 169.254.0.1/16 scope global cloud0inet6 fe80::c49e:e5ff:fe49:124e/64 scope link valid_lft forever preferred_lft forever [root@agent1 ~]#把v-1-VM遷移到agent1上,看到agent1多了vnet0,vnet1,vnet2
默認是因為系統虛擬機有3個網卡,對應外面的3個虛擬設備
可以使用vnc工具查看,系統虛擬機有3個網卡
?
?
cloud0是自帶的169開頭的系統虛擬機橋接的網卡
[root@agent1 ~]# ovs-vsctl show b8d2eae6-27c2-4f94-bb28-81635229141dBridge "cloud0"Port "cloud0"Interface "cloud0"type: internalPort "vnet0"Interface "vnet0"Bridge "cloudbr0"Port "eth0"Interface "eth0"Port "vnet1"Interface "vnet1"Port "cloudbr0"Interface "cloudbr0"type: internalBridge "cloudbr2"Port "vnet2"tag: 6Interface "vnet2"Port "eth2"Interface "eth2"Port "cloudbr2"Interface "cloudbr2"type: internalovs_version: "2.3.1" [root@agent1 ~]#?
?
查看tag標記
上面ovs-vsctl show這里也能看到tag標記
virsh edit 1 看到打的tag標記?
?
?
?
關于數據包流向
這里的br100可以理解為vlan100?
1 VM實例instance產生一個數據包并發送至實例內的虛擬網絡接口VNIC,圖中就是instance中的eth0.
2 這個數據包會傳送到物理節點上的VNIC接口,如圖就是vnet接口。
3 數據包從vnet NIC出來,到達橋(虛擬交換機)br100上.
4 數據包經過交換機的處理,從物理節點上的物理接口發出,如圖中物理節點上的eth0.
5 數據包從eth0出去的時候,是按照物理節點上的路由以及默認網關操作的,這個時候該數據包其實已經不受你的控制了。
?
?ovs-vsctl用法
列出所有掛接到網卡上的網橋
[root@agent1 ~]# ovs-vsctl list-ports cloudbr2 eth2 vnet2 [root@agent1 ~]#
CloudStack的HA
?
系統可靠性與可用性
管理服務器的HA
CloudStack管理服務器可以部署多節點的配置,使得它不容易受到單個服務器故障影響。
管理服務器(不同于Mysql數據庫)本身是無狀態的,可以被部署在負載均衡設備后面。
停止的所有管理服務不會影響主機的正常操作。所有來賓VM將繼續工作。
當管理主機下線后,不能創建新的VMs、最終用戶,管理UI、API、動態負載以及HA都將停止工作
啟用了HA的虛擬機
用戶可以給指定的虛擬機開啟高可用特性。默認情況下所有的虛擬路由虛擬機和彈性輔助均衡虛擬機自動開啟了高可用特性。
當CloudStack檢測到開啟了高可用特性的虛擬機崩潰時將會在相同的可用資源中自動重啟該虛擬機。
高可用特性不會垮資源域執行。
CloudStack采用比較保守的方式重啟虛擬機,以確使不會同時運行兩個相同的實例。
管理服務器會嘗試在本集群的另一臺主機上開啟該虛擬機。
高可用特性只在使用共享主存儲的時候才可以使用,不支持使用本地存儲作為主存儲的高可用
?
下面模擬開啟高可用
?
?這里拿系統虛擬機當普通虛擬機使用(系統虛擬機默認是開啟了高可用的)
?這里寫一個高可用標記,隨便寫
?
?
修改了全局設置重啟master服務
[root@master1 ~]# /etc/init.d/cloudstack-management restart Stopping cloudstack-management: [FAILED] Starting cloudstack-management: [ OK ] [root@master1 ~]# /etc/init.d/cloudstack-management restart Stopping cloudstack-management: [ OK ] Starting cloudstack-management: [ OK ] [root@master1 ~]#
?
?修改虛擬機標簽
加上標簽,需要刷新下,看到立即啟用了高可用?
?
?
?
API相關
?
管理頁面少批量創建虛擬機功能,但是可以通過api方式自己開發實現,需要創建密鑰,然后通過api連接創建實例
密鑰生成完畢,可以通過api連接創建實例?
?
?
?
?
知識補充一
?
?關于添加資源域時選擇安全組
生產環境中關于安全組,可以先創建一個開放所有端口和所有協議的安全組,然后創建實例的時候使用
?
管理頁面可以添加vlan
?
?
?
?
自己實驗測試補充
我直接對agent1宿主機 執行halt -pf模擬意外斷電,之前上面運行一個系統虛擬機。沒有自動在agent2節點上啟動 管理頁面一直保持下面狀態 重啟master服務沒作用?
?
點擊遷移虛擬機也不可行
?
解決辦法:
是刪除agent1 宿主機
然后在系統vm那里點擊運行此虛擬機。它會自動在agent2上啟動
(宿主機2上起新的系統虛擬機的時候,會有1分鐘左右的斷網。 筆記本無法連接此宿主機,1分鐘后恢復,可能與我虛擬機配置有關)
?
?
?知識補充二
?
1、kvm虛擬機達到2000多臺,對mysql也沒壓力。
因此mysql調優這塊不需要研究太深,做好主備即可。
?
2、企業生產環境服務器配置
企業私有云,服務器配置
企業搭建自己的私有云機器建議配置
CPU:2Cx10核(Intel Xeon E5-2650 v3 或Intel Xeon E52650 v3)
內存:256G (16G*16,單條內存無要求,按照最高性價比采購)
網卡:10G*2(模塊與目前機房的萬兆交換機匹配)
磁盤:600G*2塊 SAS盤(系統盤,大小無特殊規定,按公司標準采購) 4T*6 SATA盤
機器配置太高也沒意義。 散熱也是問題,電源發熱。風扇不停的轉
網卡這里千兆網卡是標配,自帶的。這里寫10GB*2 是附加買的
?
3、生產環境master配置
master放兩臺
數據庫配置主從
二級存儲也可以單獨nfs服務器(drbd),也可以使用gluster,然后作為nfs
4、部署架構
部署架構應該從硬件、網絡、存儲綜合考慮,保障私有云整體的穩定性和安全性,
主控制節點需要2臺機器保障控制節點高可用,計算節點由多臺機器(至少2臺)組成一個
或多個集群,保障業務的連續性,穩定性,安全性
?
5、控制節點架構
主控節點由兩臺機器作為主備,安裝CloudStack管理端,MYSQL和分布式文件系統作為二級存儲,都是一主一備。
CloudStack管理服務器可以部署一個或多個前端服務器并連接單一的Mysql數據庫。可視需求使用
一對硬件輔助均衡對web請求進行分流,另一備份管理節點可使用遠端站點的Mysql復制數據以增加災難
恢復能力
?
6、私有云整體架構
管理服務器集群(包括前端輔助均衡節點,管理節點,以及Mysql數據庫節點)通過兩個負載均衡節點接入管理網絡。
輔助存儲服務器接入管理網絡
每一個機柜提供點POD包括存儲和計算節點服務器。
每一個存儲和計算節點服務器都需要有冗余網卡連接到不同交換機上
7、關于掛載的glusterfs
我們大多數情況下采用分布式復制卷,已經類似raid10了。
硬盤只需要做成raid5即可
8、高級網絡
每個區域都有基本或高級網絡。
一個區域的整個生命周期中,不論是基本或高級網絡。一旦在CloudStack中選擇并配置區域的網絡類型,就無法再修改
?9、虛擬機遷移
建議是在同一個cluster內,共享統一存儲的
?
轉載于:https://www.cnblogs.com/nmap/p/6401507.html
總結
以上是生活随笔為你收集整理的CloudStack学习-3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到和死人打架有什么预兆
- 下一篇: 梦到南天门是什么意思