2015年12月31日 星期四
2015年12月17日 星期四
RHEL7 防火牆設定
firewalld 服務概觀
管理 firewalld 服務
使用 firewalld 客製化規則
使用 firewalld 網路 NAT 功能
管理 SELinux Port 標籤
- RHEL7 預設使用 firewalld 服務管理主機層級的防火牆服務
- firewalld 管理核心的 netfilter 功能,下轄三個指令與服務:
- iptables
- ip6tables
- ebtables
※PS:以上三種服務會互相干擾,須要使用 systemctl mask 指令來隔開! - firewalld 區分所有的流量進到 zone (區域)裡面,而每個 zone 裡面,均有不同的 rule (規則)!
- firewalld 區分進來的封包該進到哪一個 zone,其運作邏輯如下列順序:
- 若進來的封包,其來源位址符合某一 zone 內的某一針對來源位址所設定的規則,則該封包將被繞送經過該 zone !
- 若接受封包進來的介面符合某一 zone 內所設定的過濾器,則使用該 zone 進行封包過濾!
- 其他狀況,使用 Default Zone !! 通常 Default Zone 名為 public ,但管理者可指定其他的 zone 為 Default Zone!
- firewalld 預設的 zone:
名稱 預設內容 trusted 允許所有進入的流量 home 退回進入的流量!除了與出去的流量相關封包,或是 ssh, mdns, ipp-client, samba-client, 或者 dhcpv6-client 等預設的服務! internal 退回進入的流量!除了與出去的流量相關封包,或是 ssh, mdns, ipp-client, samba-client, 或者 dhcpv6-client 等預設的服務!(預設值與home相同!) work 退回進入的流量!除了與出去的流量相關封包,或是 ssh, ipp-client, 或者 dhcpv6-client 等預設的服務! public 退回進入的流量!除了與出去的流量相關封包,或是 ssh, 或者 dhcpv6-client 等預設的服務!為所有新增網路卡介面的 Default Zone! external 退回進入的流量!除了與出去的流量相關封包,或是 ssh 等預設的服務!要出去的 IPv4 流量封包被轉到這裡,將會進行 IP 來源位置的偽裝! dmz 退回進入的流量!除了與出去的流量相關封包,或是 ssh 等預設的服務! block 退回所有進入的流量!除了與出去的流量相關封包! drop 排除所有進入的流量!除了與出去的流量相關封包!
管理 firewalld 服務
- 管理 firewalld 有下列三種方式:
- 使用 firewall-cmd 文字指令!
- 使用 firewall-config 圖形介面!
- 使用 /etc/firewalld/ 目錄下的檔案!
- 當 firewalld 套件被安裝好之後, firewall-cmd 即已經存在!
- 參數使用須知:
- 使用的參數中,如未指定 --permanent,則預設會是 runtime 狀態!如未指定 zone 名稱,則所有規則,將用在 public zone 上!
- 如果使用 --permanent 參數後,要立即生效,則必須下 firewall-cmd --reload 指令,重新導入規則內容!
- 如果只是暫時使用的規則,可以設定 --timeout=
參數!時間到,自動移除!
- 常用參數列表:
參數名稱 內容說明 --get-default-zone --set-default-zone= --get-zones 列出所有的 zone !! --get-services 列出所有預設的服務! --get-active-zones 列出所有正在使用中的 zone ,連同介面以及來源資訊! --add-source= [--zone= ] 繞送由該 IP address 或 network/netmask 進來的封包,進入指定的 zone !! --remove-source= [--zone= ] 移除由上項新增的規則! --add-interface= [--zone= ] 繞送由該介面進來的封包,進入指定的 zone !! --change-interface= [--zone= ] 將上項新增的規則,更換指定的 zone !! --list-all [--zone= ] 列出某一 zone 內所有的介面、來源設定、服務設定以及 ports 的設定! --list-all-zones 列出所有 zone 內所有的介面、來源設定、服務設定以及 ports 的設定! --add-service= [--zone= ] 允許流量進入該服務 --remove-service= [--zone= ] 移除由上項新增的規則! --add-port= [--zone= ] 允許流量進入該埠!協定可以是 tcp、udp、icmp 等等 --remove-port= [--zone= ] 移除由上項新增的規則! - 範例:
- # firewall-cmd --set-default-zone=dmz
- # firewall-cmd --permanent --zone=internal --add-source=192.168.0.0/24
- # firewall-cmd --permanent --zone=internal --add-service=mysql
- # firewall-cmd --reload
- firewalld 設定目錄:
- /etc/firewalld
- /usr/lib/firewalld
- 若兩目錄內有相同檔案名稱,將只使用 /etc/firewalld 目錄內的檔案!
使用 firewalld 客製化規則
- 管理員還有其他兩項方式,可以滿足管理防火牆的需求:direct rules 以及 rich rules !!
- Direct Rules
- 允許管理員直接手動寫 {ip,ip6,eb}tables 規則到 firewalld 所管理的防火牆內容中!
- 但當強力的規則無法出現在規則列表中,這些規則將很難管理!
- Direct Rules 的使用彈性比起標準的規則或是 Rich Rules,都是比較差的!
- Direct Rules 只要不是嵌入在 zone 內,就會在 firewalld 規則之前被導入引用!
- 範例:
# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.1.0/24 -j blacklist
# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted "
# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
- Rich Rules
- Rich Rules 給予管理員一種撰寫防火牆規則的方式!而該方式是無法用基本防火牆的語法來達成。
- 語法上,不僅可以使用基本的允許/拒絕功能,還可以使用記錄、製作port 轉向、IP 偽裝、或是速率上的限制!
- 基本語法:
rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]
- 設定格式:rule option=value
- family=ipv4 | ipv6
- source | destination address=<CIDR>
- service name=http | ftp ...| <SERVICE_NAME>
- port port=<PORT NUMBER>
- protocol=tcp | udp |...
- 規則判斷順序:每個 zone 內的判斷順序均相同!
- 為該 zone 所設定的任何 port 轉換與偽裝規則!
- 針對該 zone 所設定的記錄規則!
- 為該 zone 所設定的允許規則!
- 為該 zone 所設定的拒絕規則!
- 如果有封包不符合任何 zone 內的任何規則,將該封包將會被拒絕!
- Rich Rules 配合 firewall-cmd 指令的常用參數:
參數名稱 內容說明 --add-rich-rule='<RULE>' 新增<RULE>到指定的 zone 內! --remove-rich-rule='<RULE>' 移除指定 zone 內的<RULE>! --query-rich-rule='<RULE>' 查詢指定 zone 內的<RULE>! --list-rich-rule='<RULE>' 列出指定 zone 內的所有<RULE>! - 範例:
# firewall-cmd --permanent --zone=classroom --add-rich-rule='rule family=ipv4 source address=192.168.1.111/32 reject'
# firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'
# firewall-cmd --permanent --add-rich-rule='rule protocol value=esp drop'
# firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept
- Rich Rule 的使用記錄
- 使用 syslogd :
# log [prefix="<PREFIX TEXT>"] [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]
- 使用 auditd :
- 可以做限制,避免檔案空間被塞滿!
- 使用 syslogd :
使用 firewalld 網路 NAT 功能
- 練習:把 4321 port 轉到 80 port (只針對 192.168.1.0/24 網段)
# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.1.0/24 forward-port port=4321 protocol=tcp to-port=80'
管理 SELinux Port 標籤
2015年12月11日 星期五
RHEL 的 OpenStack (十二)--管理 Heat Orchestration 服務
Heat Orchestration 服務
Heat Orchestration 服務是為了 OpenStack 雲,提供一種基於樣板的編制工程方式,用於建立、管理雲端架構資源!
Hear Orchestration 服務,由下列幾項元件組成:
設定Heat Orchestration 服務
設定檔包含項目:
啟動與驗證 Stack
太複雜,先跳過...
練習3:
練習4:
Heat Orchestration 服務是為了 OpenStack 雲,提供一種基於樣板的編制工程方式,用於建立、管理雲端架構資源!
Hear Orchestration 服務,由下列幾項元件組成:
- heat-cfn
- heat-api
- heat-api-cfn
- heat-engine
- heat-api-cloudwatch
- heat-cfntools 以及 cloud-init 套件
- # source /root/keystonerc_admin
- # yum list openstack-heat* python-heatclient heat-cfntools
- # grep 10.1.1.1 /etc/heat/heat.conf
- # keystone user-get heat
- # keystone service-get heat
- # keystone catalog --service orchestration
- # keystone user-get heat-cfn
- # keystone service-get heat-cfn
- # keystone catalog --service cloudformation
- # keystone user-role-list --user heat --tenant services
- # openstack-service status heat
設定Heat Orchestration 服務
設定檔包含項目:
- 建立預設的 Nova 浮動IP池,Heat 將會從這個池分配浮動IP
- 指定預設的浮動IP池
- 設定 DNS 轉址
- 建立各式 Nova 樣板,管理員可以用於 Heat 樣板中
- 建立 Heat 可用的 Keystone 使用者
- # source /root/keystonerc_admin
- # nova floating-ip-pool-list
- # crudini --get /etc/nova/nova.conf DEFAULT default_floating_pool
- # crudini --set /etc/nova/nova.conf DEFAULT default_floating_pool public
- # openstack-service restart nova
- # crudini --set /etc/neutron/dhcp_agent.ini DEFAULT dnsmasq_dns_servers 10.1.1.254
- # openstack-service restart neutron --> 另一部主機也需要做
- # nova flavor-create web.tiny auto 1024 20 1
- # keystone tenant-create --name heatproject
- # keystone user-create --name heatuser --pass redhat
- # keystone user-role-add --user heatuser --role _member_ --tenant heatproject
- # keystone user-role-add --user heatuser --tenant heatproject --role heat_stack_owner
- # vim /root/keystonerc_heatuser
- # source /root/keystonerc_heatuser
- # glance image-list
- # neutron net-list
- # neutron net-create net1
- # neutron subnet-create --name subnet1 net1 192.168.0.0/24
- # neutron router-create router1
- # neutron router-gateway-set router1 public
- # neutron router-interface-add router1
- # nova keypair-add --pub-key /root/.ssh/id_rsa.pub heatkey
- # nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
- # nova secgroup-add-rule default tcp 80 80 0.0.0.0/0
- # nova secgroup-add-rule default tcp 443 443 0.0.0.0/0
- # nova secgroup-add-rule default tcp 3306 3306 0.0.0.0/0
- # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
啟動與驗證 Stack
太複雜,先跳過...
練習3:
- 先編好一個檔案:multi.template
- # source /root/keystonerc_heatuser
- # neutron subnet-list
- # neutron net-list
- # vim /root/env.yaml
parameters:
key_name: heatkey
public_net_id: <上一項指令的ID>
private_net_id: <上一項指令的ID>
private_subnet_id: <上兩項指令的ID>
- # heat stack-create -r -f multi.tempate -e /root/env.yaml multi
- # heat stack-list
- 在一部主機上 # virsh list
- # heat stack-show multi
- # heat event-list multi
- # nova list
- # ssh root@10.1.1.10
- # ssh ec2-user@10.1.1.10
- $ su -
- # systemctl status httpd.service
- # exit
- $ exit
- # ssh ec2-user@10.1.1.11
- $ sudo systemctl status mariadb.service
- $ exit
- 移除 Stack
- # heat stack-delete multi
練習4:
RHEL 的 OpenStack (十一)--管理 Ceilometer 遙測技術服務
Ceilometer 的作用
提供 API 以及客戶端指令,去收集系統上的資料,用於客戶帳單、系統監視或是警告!
遙測技術(telemetry)服務由下列幾個元件組成:
Ceilometer 的基本觀念
Ceilometer 與監測不同的地方
已加入 Ceilometer 的 OpenStack 元件
ceilometer 指令來自於 python-ceilometerclient RPM套件!
常用指令:
練習3:
提供 API 以及客戶端指令,去收集系統上的資料,用於客戶帳單、系統監視或是警告!
遙測技術(telemetry)服務由下列幾個元件組成:
- ceilometer-agent-compute : 運作於每一個計算節點上,做資源使用的統計調查
- ceilometer-agent-central : 運作於中央管理主機上,做非計算節點或實體的資源統計資料調查!
- ceilometer-collector : 運作於一個或多個中央管理主機上,監控訊息佇列!通知訊息將會被處理成遙測技術訊息,並且被儲存起來!
- Mongo database : 收集儲存樣品資料
- API Server: 運作於一個或多個中央管理主機,用來提供存取已收集的資料!
Ceilometer 的基本觀念
Ceilometer 與監測不同的地方
已加入 Ceilometer 的 OpenStack 元件
- Nova
- Neutron
- Glance
- Cinder
- Swift
- 累積式(Cumulative)
- 標準式(Gauge):用於浮動式IP、影像上傳、硬碟I/O等
- 時變式(Delta)
- # source /root/keystonerc_admin
- # yum list installed "ceilometer" mongodb-server mongodb
- # cat /etc/mongodb.conf
- # systemctl status mongod
- # grep 10.1.1.1 /etc/ceilometer/ceilometer.conf
- # keystone user-get ceilometer
- # keystone tenant-get services
- # keystone service-get ceilometer
- # keystone catalog --service metering
- # keystone user-role-list --user ceilometer --tenant services
- # openstack-service restart ceilometer
- # systemctl status openstack-ceilometer-alarm-evaluator.service
- # systemctl status openstack-ceilometer-alarm-notifier.service
- # systemctl status openstack-ceilometer-api.service
- # systemctl status openstack-ceilometer-central.service
- # systemctl status openstack-ceilometer-collector.service
- # systemctl status openstack-ceilometer-compute.service
- # systemctl status openstack-ceilometer-notification.service
ceilometer 指令來自於 python-ceilometerclient RPM套件!
常用指令:
- ceilometer meter-list
- ceilometer sample-list -m image
- ceilometer statistics -m image
- # source /root/keystonerc_admin
- # glance image-create --name ceilometertest --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/small.img
- # ceilometer meter-list
- # ceilometer meter-list | grep image
- # ceilometer sample-list -m image
- # ceilometer alarm-threshold-create --name monitor-image --description 'monitor image' --meter-name image.update --threshold 1 --comparison-operator ge --statistic count --period 60 --evaluation-period 1 --alarm-action 'log://'
- # ceilometer alarm-list
- # glance image-update --name ceilometer ceilometertest
- # sleep 1m && ceilometer alarm-list
- # ceilometer alarm-history <上項指出現的ID值>
練習3:
RHEL 的 OpenStack (十)--管理 Nova 計算節點
移除 Nova 計算節點
移除 Nova 計算節點
新增 Nova 計算節點
擴展 OpenStack 第一步,即是新增 Nova 計算節點!
增加新節點最後一步驟就下要啟動一實體!
練習3:
移除 Nova 計算節點
- 在已經執行 nova-compute 服務的機器上,取消計算服務!
- 可以利用 nova service-disable 達成目的
- # nova service-disable --reason "Down for maintenance" demo.example.com nova-compute
- # source /root/keystonerc_admin
- # nova list --all-tenants
- # nova delete <上項指令列出的VM-ID>
- # nova service-list
- # nova service-disable --reason "Maintenance" 另一部主機名稱 nova-compute
- # nova service-list
- # nova service-delete 6
- # nova service-list
- 另一部主機重開機
- # nova service-list --> 發現另一部主機照樣回來了!!
- # nova service-disable --reason "Maintenance" 另一部主機名稱 nova-compute
- 另一部主機重開機
- # nova service-list
新增 Nova 計算節點
擴展 OpenStack 第一步,即是新增 Nova 計算節點!
- OpenStack 所有服務均可反中央集中管理!
- 計算節點利用 hypervisor 管理實體
- 安裝 openstack-nova-compute 套件
- 由其他控制節點或是計算節點,複製一份 /etc/nova/nova.conf 檔案
- 利用指令 nova host-list 或 nova service-list 來檢視新增的結果!
- 若想要取消,請參考上一節說明!
- # source /root/keystonerc_admin
- # nova service-list
- # nova service-enable 另一部主機名稱 nova-compute
- # nova service-disable --reason "Test Server" 本地主機 nova-compute
- # nova service-list
增加新節點最後一步驟就下要啟動一實體!
練習3:
- # source /root/keystonerc_admin
- # nova service-list
- # source /root/keystonerc_myuser
- # nova boot --flavor m2.tiny --image small --poll test
- # source /root/keystonerc_admin
- # nova list --all-tenants
- # nova show <上項所列出的ID值> ==> 注意看 hypervisor 項目
- 移除方式
- # source /root/keystonerc_myuser
- # nove delete test
RHEL 的 OpenStack (九)--管理 Nova 計算與控制器服務
Nova 計算服務
超用實體資源
OpenStack 允許在計算節點上,過用 CPU 與 RAM 資源!但不建議過度的使用,以下為建議的比例:
/etc/nova/nova.conf 檔案內的 cpu_allocation_ratio 以及 ram_allocation_ratio 有設定比例!
練習1:
使用 CLI 佈署實體
佈署實體時,可用下列指令查看相關資訊:
練習2:
除錯
練習3:
- Nova 控制器節點執行大多數 Nova 服務!
- nova-scheduler : 協調不同的 Nova 服務活動!
- Nova 計算節點利用虚擬化軟體去管理、啟動 OpenStack 上的實體!
- RHEL上的OpenStack 使用 openstack-db 指令,設定 Nova 服務的資料庫!
- 為 Nova 建立使用者,並且將該使用者加入 service 這個租賃戶裡!
- 為環境建立結束點,以及在 /etc/nova/nova.conf 檔內,設定合適的參數值!
- 啟用與啟動 Nova 服務
- 可用 openstack-status 查看狀態!
超用實體資源
OpenStack 允許在計算節點上,過用 CPU 與 RAM 資源!但不建議過度的使用,以下為建議的比例:
- CPU : 16 : 1 (指實心 cole)
- RAM : 1.5 : 1
/etc/nova/nova.conf 檔案內的 cpu_allocation_ratio 以及 ram_allocation_ratio 有設定比例!
練習1:
- # source /root/keystonerc_admin
- # systemctl status openstack-nova-scheduler
- # systemctl status openstack-nova-conductor
- # systemctl status openstack-nova-api
- # systemctl status openstack-nova-consoleauth
- # systemctl status openstack-nova-novncproxy
- 登入另一個計算節點
- # systemctl status openstack-nova-compute
- # systemctl status libvirtd
- 回到原來節點
- # keystone user-get nova
- # keystone user-role-list --user nova --tenant services
- # keystone service-list | grep nova
- # keystone endpoint-get --service compute
- # vim /etc/nova/nova.conf
admin_tenant_name=services
admin_user=nova
admin_password=xxxxxxx
auth_host=10.1.1.1
auth_port=35357
auth_protocol=http
auth_uri=http://10.1.1.1:5000
..... - # vim /etc/nova/nova.conf
rabbit_host=主機名稱(FQDN)
rabbit_use_ssl=False
rabbit_port=5672
rabbit_userid=guest
rabbit_password=guest
....
- # openstack-status
使用 CLI 佈署實體
佈署實體時,可用下列指令查看相關資訊:
- nova flavor-list : 查看硬體設定
- nova image-list : 查看用來啟動實體的影像檔
- nova network-list : 查看可用網路
練習2:
- # source /root/keystonerc_myuser
- # cp /etc/issue /tmp
- # echo "Installed using nova command-line" >> /tmp/issue
- # nova keypair-add key1 > /root/key1
- # nova secgroup-create mysecgroup "SSH"
- # nova secgroup-add-rule mysecgroup tcp 22 22 0.0.0.0/0
- # nova image-list
- # nova flavor-list
- # neutron net-list
- # nova boot --flavor m1.small --image small --key-name key1 --security-groups mysecgroup --nic net-id=<net-list列出來private那一組ID> --file /etc/issue=/tmp/issue test
- # nova list
- # nova list
- 利用 myuser / redhat 登入 dashboard,登入實體 test
- # nova floating-ip-list
- # nova floating-ip-associate test 10.1.1.2
- # chmod 600 /root/key1
- # ssh -i /root/key1 cloud-user@10.1.1.2 -->請保留,開另一個新的 teminal
- 登入本機
- # source /keystonerc_myuser
- # cinder create --display-name vol6 2
- # cinder list
- # nova volume-attach test <上項指令的ID> auto
- # cinder list
- <test 主機>$ lsblk
- 清除 nova 實體
# nova delete test
# cinder delete vol6
除錯
練習3:
2015年12月10日 星期四
RHEL 的 OpenStack (八)--管理 Neutron 網路服務
Cinder 區塊儲存服務
租賃戶設定連網服務
練習2:
LBAAS: Load Balance as a Service: 讓 Neutron 可以將網路流量分散到兩部以上的實體!
分散的方式有下列:
Neutron 除錯
練習4:
- Neutron 提供 OpenStack 網路連結功能以及定址 OpenStack 網路環境
- 每個租賃戶可以擁有多個私人網段,亦允許租賃戶有自己的IP定址策略,就算是IP位置重疊也無妨!
- OpenStack 的連網技術使用 plug-in 觀念!
- 其基本連網模式是利用 Linux VLANs 以及 IP tables 來進行網路連網的隔離運作!
- OpenStack 網路元件的組成,是由幾個代理人來執行:
- L3 agent: 提供外部存取 OpenStack 上的實體物件!
- DHCP agent: 提供子網路內部連結!
- Metadata agent: 提供訊息服務
- LBaaS agent: 提供負載平衡服務
- Open vSwitch agent: 管理 Open vSwitch plug-in
- # source /root/keystonerc_admin
- # systemctl status neutron-openvswitch-agent
- # systemctl status neutron-dhcp-agent
- # systemctl status neutron-l3-agent
- # systemctl status neutron-metadata-agent
- # systemctl status neutron-lbaas-agent
- # systemctl status neutron-ovs-cleanup
- # neutron agent-list
- # keystone user-list --tenant services
- # keystone user-get neutron
- # keystone service-get neutron
- # keystone endpoint-get --service network
- # vim /etc/neutron/neutron.conf
admin_tenant_name=services
admin_user=neutron
admin_password=xxxxx
auth_host=10.1.1.1
auth_port=35357
auth_protocol=http
auth_uri=http://10.1.1.1:5000/
...
- # crudini --get /etc/neutron/neutron.conf DEFAULT core_plugin
- # crudini --get /etc/neutron/plugin.ini ml2 mechanism_drivers
- # crudini --get /etc/neutron/plugin.ini ml2 tenant_network_types
- # crudini --get /etc/neutron/plugin.ini ml2_type_vlan metwork_vlan_ranges
- # cat /etc/sysconfig/network-scripts/ifcfg-br-ex
- # ovs-vsctl show
- # openstack-status
租賃戶設定連網服務
- 網路設定步驟:先新增 router,接下來才是建立網路與子網路!
- 若子網路是私人網段,則使用 neutron router-interface-add 增加一個介面到 router 上!
- 利用新增一個 Gateway 方式,將 router 連到外部網路!
- 外部網路可以指定一個浮動IP,連結上實體物件!
- OpenStack 利用核心功能,提供網路名稱空間的使用!
- 網路空間包含虚擬存取網路資源的抽象層網路功能,類似 port 與介面的概念!
- ip 以及 ifconfig 指令無法顯示網路空間!使用 ip netns 以及 iproute 才能清楚了解網路架構!
- 範例指令:
- # source /root/keystonerc_admin
- # neutron router --list
- # ip netns exec qrouter-UUID ip a
- # ip netns exec qruoter-UUID ping 10.1.1.2
練習2:
- # source /root/keystonerc_myuser
- # keystone router-create router1
- # neutron net-create private
- # neurton subnet-create --name subpriv private 192.168.0.0/24
- # neutron router-interface-add router1 subpriv
- # neutron port-list
- # neutron router-gateway-set router1 public
- # neutron floatingip-create public
- # neutron floatingip-list
LBAAS: Load Balance as a Service: 讓 Neutron 可以將網路流量分散到兩部以上的實體!
分散的方式有下列:
- Round-Robin:在多個實體之間,轉換要求!
- Source IP:來自於同一個IP的請求,導到同一個實體!
- Least Connections:將流量導到最少的連結實體上!
- # source /root/keystonerc_admin
- # grep CONFIG_LBAAS_INSTALL /root/answers.txt
- # neutron agent-list
- # grep service_plugins /etc/neutron/neutron.conf
- # grep service_provider /etc/neutron/neutron.conf
- # crudini --get /etc/neutron/lbaas_agent.ini DEFAULT device_driver
- # glance image-create --name web --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/web.img
- # glance image-list
- # source /root/keystonerc_myuser
- # echo "web1" > /root/index1.html
- # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index1.html web1
- # echo "web2" > /root/index2.html
- # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index2.html web2
- # neutron lb-pool-create --name lb1 --lb-method ROUND_ROBIN --protocol HTTP --subnet subpriv
- # nova list
- # neutron lb-member-create --address 192.168.0.2 --protocol-port 80 lb1
- # neutron lb-member-create --address 192.168.0.3 --protocol-port 80 lb1
- # neutron lb-healthmonitor-create --deplay 5 --type HTTP --max-retries 3 --timeout 2
- # neutron lb-healthmonitor-associate <上項指令所列出的ID值> lb1
- # neutron lb-vip-create --name lb1-vip --protocol-port 80 --protocol HTTP --subnet subpriv lb1
- # neutron floatingip-create public
- # neutron floatingip-associate <上項指令所列出的id值> <上兩項指令所列出的port id值>
- # neutron lb-member-list
- # curl 10.1.1.2
- # curl 10.1.1.2
- 清除方式:
# neutron lb-vip-delete lb1-vip # neutron lb-pool-delete lb1 # nova delete web1 web2
Neutron 除錯
練習4:
RHEL 的 OpenStack (七)--管理 Cinder 區塊儲存服務
Cinder 區塊儲存服務
練習1:
Cinder 預設後端是 LVM ,可改成其他的儲存服務,例如: Ceph
練習3:
以 Gluster 做為 Cinder 資料後端
GlusterFS 是 Red Hat Storage 的檔案系統,可用來做為 Cinder 的資料後端!
想要開啟這項功能,需要調整 /etc/cinder/cinder.conf 檔案內容!
除錯
練習4:
- OpenStack 內的區塊儲存服務由四個子服務所構成!
- API 服務(openstack-cinder-api)
- 排程服務(openstack-cinder-scheduler)
- 卷冊服務(openstack-cinder-volume)
- 備份服務(openstack-cinder-backup)
- 佈署區塊服務方式由三個狀態所組成:
- 安裝前準備
- 一般安裝設定
- 卷冊服務規格設定
- 區塊服務支援的儲存方式:
- LVM/iSCSI
- ThinLVM
- NFS
- NetAPP NFS
- Red Hat Storage (Gluster)
- Dell EqualLogic
- openstack-cinder-volume:可將 volume group 直接附加到正在執行中的 Server!
- Cinder 服務開啟後,即可使用 cinder 指令管理 Cinder 卷冊!
練習1:
- # grep CINDER /root/answers.txt
CONFIG_CINDER_INSTALL=y
CONFIG_CINDER_DB_PW=xxxx
CONFIG_CINDER_KD_PW=xxxx
CONFIG_CINDER_BACKEND=lvm
CONFIG_CINDER_VOLUMES_CREATE=n
CONFIG_CINDER_VOLIMES_SIZE=20G
... - # ps axf | grep cinder
- # crudini --get /etc/cinder/cinder.conf DEFAULT osapi_volume_workers
- # grep listen_port /etc/cinder/cinder.conf
- # ss -nlp | egrep 8776
- # ls /etc/cinder/
- # vim /etc/cinder/cinder.conf
rabbit_host=10.1.1.1
rabbit_port=5672
rabbit_hosts=10.1.1.1:5672
rabbit_use_ssl=False
====== 為了配合 Glance 運作 ========
glance_host=10.1.1.1
====== 啟動支援 LVM 儲存方式 =======
[lvm]
iscsi_helper=lioadm
volume_group=cinder-volumes
iscsi_ip_address=10.1.1.1
volume_driver=cider.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name=lvm
- # vim /etc/cinder/api-paste.ini
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
admin_tenant_name=services
service_port=5000
auth_uri=http://10.1.1.1:5000/
service_host=10.1.1.1
service_protocol=http
admin_user=cinder
identity_uri=http://10.1.1.1:35357
admin_password=xxxxx
- # source /root/keystonerc_admin
- # keystone service-get cinder
- # keystone catalog --service volume
- # keystone user-get cinder
- # cinder list
- 管理 Cinder 卷冊的工作:
- 備份與移植
- 針對卷冊形式,建立加密形式
- 找尋被驗證服務註冊的結束點
- 調整已存在卷冊大小
- 所需要使用的指令:
- # cinder --help
- # vgdisplay
- # lvdisplay
- # openstack-status
- # source /root/keystonerc_myuser
- # cinder create --display-name vol1 2
- # cinder list
- # vgs
- # cinder show vol1
- # grep backup_driver /etc/cinder/cinder.conf
backup_driver=cinder.backup.drivers.swift - # systemctl start openstack-cinder-backup.service
- # systemctl enable openstack-cinder-backup.service
- 建使用 myuser 建立備份之前,需要付予 SwiftOperator 角色
- # source /root/keystonerc_admin
- # keystone user-role-add --role SwiftOperator --user myuser --tenant myopenstack
- # source /root/keystonerc_myuser
- # cinder backup-create vol1 --display-name vol1-backup
- # cinder backup-list
- # swift list
- # swift list volumebackups
- 刪除方式:
- cinder delete vol1
- cinder backup-delete ID (不是 Volume ID)
Cinder 預設後端是 LVM ,可改成其他的儲存服務,例如: Ceph
練習3:
- 登入 Ceph 主機
- # ceph osd pool create volumes 128
- # ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'
- 登入 Cinder 主機
- # yum -y install ceph-common
- # vim /etc/ceph/ceph.client.cinder.keyring ==> 內容貼上第 3 步驟產生的內容
- # chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
- 把 Ceph 主機上的 /etc/ceph/ceph.conf 複製到 Cinder 主機上的 /etc/ceph/ceph.conf
- # vim /root/client.cinder.key ==> 內容貼上第 3 步驟產生的「key」內容
如果忘記,可在 Ceph 主機上,執行 # ceph auth get-key client.cinder - # uuidgen
- # vim /root/secret.xml
<secret ephemeral='no' private='no'>
<uuid>由上一步驟產生的 UUID 值!</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret> - # virsh secret-define --file /root/secret.xml
- # virsh secret-set-value --secret 上一步驟的 UUID 值! --base64 $(cat /root/client.cinder.key)
- # cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.orig
- # vim /etc/cinder/cinder.conf ==> 增加下列資料:
enabled_backends = rbd, lvm
[rbd]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_sanpshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
glance_api_version = 2
rbd_user = cinder
rbd_secret_uuid = 上一步驟的 UUID 值!
- vim /etc/nova/nova.conf
rbd_user=cinder
rbd_secret_uuid=上一步驟的 UUID 值!
- # openstack-service restart nova
- # openstack-service restart cinder
- # source /root/keystonerc_admin
- # cinder create --display-name cephvol 1
- # cinder list
- 在 Ceph 主機上,確認一下卷冊內容:# rados -p volumes ls
- 刪除方式:
# cinder delete cephvol
以 Gluster 做為 Cinder 資料後端
GlusterFS 是 Red Hat Storage 的檔案系統,可用來做為 Cinder 的資料後端!
想要開啟這項功能,需要調整 /etc/cinder/cinder.conf 檔案內容!
- # yum install -y glusterfs-fuse
- # vim /etc/cinder/cinder.conf
[DEFAULT]
enabled_backends=lvm1,glusterfs1
[lvm1]
volume_group=cinder-volumes
volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name=lvm
[glusterfs1]
volume_driver=cinder.volume.drivers.glusterfs.GlusterfsDriver
glusterfs_shares_config=/etc/cinder/shares.conf
volume_backend_name=rhs
[nfs1]
volume_driver=cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config=/etc/cinder/nfsshares.conf
volume_backend_name=nfs
- # vim /etc/cinder/shares.conf ==> 手動建立
storage-server:/volumeX
storage-server:/volumeY
- # source /root/keystonerc_admin
- # cinder type-create lvm ==> 使用多個 Backend ,就需要宣告、建立合適的卷冊形式
- # cinder type-key lvm set volume_backend_name=lvm
- # cinder type-create glusterfs
- # cinder type-key glusterfs set volume_backend_name=rhs
- # cinder type-create nfs
- # cinder type-key nfs set volume_backend_name=NFS
- # openstack-service restart cinder
- # tail -f /var/log/cinder/volume.log
- # cinder create --display-name glustertest --volume-type glusterfs 1
- # cinder list
- # yum install -y glusterfs-fuse
- # cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.orig2
- # ping -c 3 rhs
- # showmount -e rhs
- # glusterfs -s rhs --volfile-id=/volume0 /mnt/
- # df
- # umount /mnt
- # crudini --set /etc/cinder/cinder.conf DEFAULT enabled_backups glusterfs,lvm
- # crudini --set /etc/cinder/cinder.conf lvm volume_group cinder-volumes
- # crudini --set /etc/cinder/cinder.conf lvm volume_driver cinder.volume.drivers.lvm.LVMISCSIDriver
- # crudini --set /etc/cinder/cinder.conf lvm volume_backend_name LVM
- # crudini --set /etc/cinder/cinder.conf glusterfs volume_driver cinder.volume.drivers.glusterfs.GlusterfsDriver
- # crudini --set /etc/cinder/cinder.conf glusterfs glusterfs_shares_config /etc/cinder/shares.conf
- # crudini --set /etc/cinder/cinder.conf glusterfs glusterfs_sparsed_volumes false
- # crudini --set /etc/cinder/cinder.conf glusterfs volume_backend_name RHS
- # vim /etc/cinder/shares.conf
rhs:/volume0 - # openstack-service restart cinder
- # tail /var/log/cinder/volume.log
- # df
- # source /root/keystonerc_admin
- # cinder type-create lvm
- # cinder type-key lvm set volume_backend_name=LVM
- # cinder type-create glusterfs
- # cinder type-key glusterfs set volume_backend_name=RHS
- # cinder type-list
- # cinder create --volume-type lvm --display-name vol2 1
- # cinder list
- # cinder create --volume-type glusterfs --display-name vol3 1
- # cinder list
- # df
- # cinder create --volume-type lvm --display-name vol4 1
- # cinder list
- 清除方式:
# cinder delete vol2
# cinder delete vol3
# cinder delete vol4 - # cinder type-list
- 清除方式
# cinder type-list
# cinder type-delete lvm
# cinder type-delete glusterfs
# cp /etc/cinder/cinder.conf.orig2 /etc/cinder/cinder.conf # chown cinder:cinder /etc/cinder/cinder.conf - # openstack-service restart cinder
除錯
練習4:
2015年12月9日 星期三
RHEL 的 OpenStack (六)--管理 Glance 影像服務
管理 Glance 影像服務
練習3:
設定 Swift 為 Glance 資料後端
練習6:
- Glance 影像服務
- 作用方式如同將虚擬硬碟影像檔註冊。
- 使用者可增加新影像檔或從已經存在的 Server 取得快照。
- 快照影像檔可用於備份或是做為新 Server 的樣板。
- 已註冊的影像檔,存放在物件儲存服務中!
- Glance服務需要 Keystone 服務來進行身份驗證管理以及使用授權!
- Glance使用 MySQL 存放影像檔的資訊資料!
- Glance 支援不同的影像檔格式:
影像格式 說明 raw vhd vmdk vdi iso qcow2 aki ari ami - Glance支授不同的 Container 格式:
Container格式 說明 bare ovf ova aki ari ami - 在 /root/answers.txt 檔案中:
CONFIG_GLANCE_INSTALL=y
CONFIG_GLANCE_BACKEND=file
- Glance 目錄
- /var/lib/glance/images : 假如 Backend 項目被設定成 file 時!
- /etc/glance/ : Glance服務設定檔 ※PS:下一版的 Glance ,將取消 glance-registry.conf 檔案!
- Glance Keystone 設定
- # keystone endpoint-list
- # grep GLANCE /root/answers.txt
- # ps axf | grep glance
- # grep workers /etc/glance/glance-*
- # grep bind_port /etc/glance/glance-api.conf
- # ss -nlp | grep 9292
- # cd /etc/glance
- # ls
- # vim /etc/glance/glance-api.conf
rabbit_host=10.1.1.1
flavor=keystone
filesystem_store_datadir=/var/lib/glance/images/ - # vim /etc/glance/glance-registry.conf
[database]
connection=mysql://....
- # cd
- # ls -al /var/lib/glance/
- # source /root/keystonerc_admin
- # keystone service-get glance
- # keystone catalog --service image
- # keystone user-get glance
- # glance image-list --all-tenants
- # glance --debug image-list --all-tenants
※PS:一定要看見 HTTP/1.1 200 OK!
- 儲存系統影像檔
- glance指令可以用來管理影像檔
- 利用 virt-sysprep 指令,可將 KVM 虚擬機中的 Linux 作業系統,打包成影像檔,方便存入 Glance
- 確認影像檔方式: qemu-img info IMAGENAME
- # glance image-create --name "NAME" --is-public IS_PUBLIC --disk-format DISK_FORMAT --container-format CONTAINER_FORMAT --file IMAGEFILE
- --location URL :可取代 --file
- # source /root/keystonerc_admin
- # glance image-create --name small --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/small.img
- # glance image-list
- # glance image-show small
- # glance image-list --all-tenants
- 使用快照進行快速佈署
- 快照是一種將執行中的實體,複製一份,簡化類似實體的建立過程!
- 使用 Oz 建立影像檔
- # oz-install -d 2 -t 3000 small-template.xml
- /var/lib/libvirt/images
- /etc/oz/oz.cfg
- # yum install -y virt-manager virt-viewer gnome-font-viewer xorg-x11-xauth
練習3:
- # yum -y install oz libguestfs-tools crudini python-glanceclient
- # systemctl status libvirtd.service
- # virsh net-list
- # cat /usr/share/libvirt/networks/default.xml
- # virsh net-define /usr/share/libvirt/networks/default.xml
- # virsh net-start default
- # virsh net-autostart default
- # virsh net-list
- # wget http://demo.example.com/pub/small-template.xml
- # ls /dev/kvm
- # vim /usr/lib/python2.7/site-packages/oz/RedHat.py
約80行的地方,加入參數:no_timer_check
self.cmdline = "method=" + self.url + " ks=file:/ks.cfg no_timer_check" - # crudini --set /etc/oz/oz.cfg libvirt image_type qcow2
- # oz-install -d 2 -t 3000 small-template.xml
- # yum -y install virt-manager virt-viewer gnome-font-viewer xorg-x11-xauth
- # ssh -X root@otherhost
- # virsh list
- # virt-viewer rhel7_x86_64
- # virt-sysprep --add /var/lib/libvirt/images/rhel7_x86_64.qcow2
- # scp root@localhost:/root/keystonerc_admin /root/
- # source /root/keystonerc_admin
- # glance image-create --name "myozimage" --is-public True --disk-format qcow2 --container-format bare --file /var/lib/libvirt/images/rhel7_x86_64.qcow2
- # glance image-list
- 打開firefox,連進 dashboard,使用 testuser/redhat
- 使用 Compute > Instance ,按下 Launch Instance 按鈕
- 輸入下列相關資料:
參數名稱 參數值 Details - Instance Name : My sealed template
- Flavor : m2.tiny
- Instance count : 1
- Instance boot source: Boot from image
- Image name: myozimage
Details - Key pair: Key2
- Security groups: sec2
Networking - Selected Networks: net1
按下 Launch 按鈕 - 在 Actions 欄位中,打開下拉式選單,選擇 Associate Floating IP!
- 選擇 10.1.1.28 ,以及在 Port to be associated之下,選擇 My sealed template: 192.168.0.4,然後再按下 Associate 按鈕!
- # rm -f ~/.ssh/know_hosts
- # ssh root@10.1.1.28
- # ping 10.1.1.254
- # exit
- 若要移除 instance ,則在 Instance 子標籤中,選擇所有實體,按下 Terminate Instance 按鈕,再按下 Terminate Instance 按鈕確認即可!
設定 Swift 為 Glance 資料後端
- 預設值中,Glance 以及快照均使用 /var/lib/glance/images 目錄來存放影像
- 可修改設定檔 glance-api.conf 來指定使用 Swift 提供服務
- 將 default_store 改成 swift
- 在 [glance_store] 項目中,設定 glance.store.swift.Store 要設定
- swift_store_auth_address 提定 Swift API 結束點
- swift_store_user
- swift_store_key
- swift_store_create_container_on_put 要設定成 true
- # source /root/keystonerc_admin
- # glance image-list
- # glance image-delete myozimage
- # glance image-delete small
- # glance image-list --all-tenants
- # glance image-delete 00000000-1111-abcd-dcba-0987654321fe
- # glance image-delete 22222222-1111-abcd-dcba-0987654321fe
- # cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.orig
- # crudini --set /etc/glance/glance-api.conf DEFAULT default_store swift
- # crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.swift.Store
- # crudini --set /etc/glance/glance-api.conf glance_store swift_store_auth_address http://10.1.1.1:5000/v2.0/
- # crudini --set /etc/glance/glance-api.conf glance_store swift_store_user services:swift
- # crudini --set /etc/glance/glance-api.conf glance_store swift_store_key redhat
- # crudini --set /etc/glance/glance-api.conf glance_store swift_store_create_container_on_put true
- # cp /usr/share/glance/glance-api-dist-paste.ini /etc/glance/glance-api-paste.ini
- # cp /usr share/glance/glance-registry-dist-paste.ini /etc/glance/glance-registry-paste.ini
- # openstack-service restart glance
- # wget -N http://demo.example.com/pub/small.img
- # glance image-create --name small --disk-format qcow2 --container-format bare --file small.img
- # glance image-list
- 刪除方式:
- glance image-delete small
- crudini --set /etc/glance/glance-api.conf DEFAULT default_store file
- crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.filesystem.Store,glance.store.http.Store
- openstack-service restart glance
- Glance 服務可以使用 Ceph 做為資料後端!
- 登入已經裝好 Ceph 的主機
- # ceph osd pool create images 128
- # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
- 回到 Glance 主機
- # yum -y install python-rbd
- # mkdir /etc/ceph/
- # vim /etc/ceph/ceph.client.glance.keyring ==> 將第3步驟的結果,複製到這裡!
- # chown glance:glance /etc/ceph/ceph.client.glance.keyring
- 把 Ceph 主機上的 /etc/ceph/ceph.conf 複製到 Glance 主機的 /etc/ceph/ceph.conf
- # cp /etc/glance/glance-api.conf /etc/glance/glance.conf.orig2
- # vim /etc/glance/glance-api.conf
show_image_direct_url=True
defalut_store = rbd
[default_store]
stores = glance.store.rbd.Store
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8
- # systemctl restart openstack-glance-api
- # source /root/keystonerc_admin
- # wet -N http://demo.example.com/pub/web.img
- # glance image-create --disk-format qcow2 --name cephweb --is-public True --container-format bare --file web.img
- # glance image-list
- 登入 Ceph 主機內
- # rados -p images ls
- 清除方式:
- # glance image-delete cephweb
- # crudini --set /etc/glance/glance-api.conf DEFAULT default_store file
- # crudini --set /etc/glance/glance-api.conf glance_store stores glance.store.filesystem.Store,glance.store.http.Store
- # openstack-service restart glance
練習6:
RHEL 的 OpenStack (五)--執行與管理 Swift 物件儲存服務
佈署Swift物件儲存服務
<<什麼是Swift 物件儲存服務?>>
物件儲存使用下列三個觀念:
<<Swift 物件儲存服務架構>>
OpenStack 物件儲存服務是一個模組化的服務,包含下列可用模組:
所有服務可在每一個節點或是指定的機器上!下列元件,可在適合的機器上操作:
<<物件儲存服務佈署設定檔>>
佈署Swift儲存節點
練習6:
<<什麼是Swift 物件儲存服務?>>
物件儲存使用下列三個觀念:
- Storage replicas
- Storage zones
- Storage regions
<<Swift 物件儲存服務架構>>
OpenStack 物件儲存服務是一個模組化的服務,包含下列可用模組:
- openstack-swift-proxy
- openstack-swift-object
- openstack-swift-container
- openstack-swift-account
所有服務可在每一個節點或是指定的機器上!下列元件,可在適合的機器上操作:
- Ring files
- Object storage: /srv/node
- Housekeeping processes
<<物件儲存服務佈署設定檔>>
- All services run on all nodes: Simplest setup
- Dedicated proxy nodes, all other services combined on other nodes
- Dedicated proxy nodes, dedicated object service node, container and account services combined on other nodes
- # yum -y install openstack-swift-proxy openstack-swift-object openstack-swift-container openstack-swift-account python-swiftclient memcached
- # source /root/keystonerc_admin
- # keystone tenant-list | grep services
- # keystone user-create --name swift --pass redhat --tenant services
- # keystone role-list | grep admin
- # keystone role-create --name SwiftOperator
- # keystone user-role-add --user swift --role admin --tenant services
- # keystone service-list | grep swift
- # keystone service-create --name swift --type object-store --description "OpenStack Object Storage"
- # keystore endpoint-create --service swift --region RegionOne --publicurl "http://10.1.1.1:8080/v1/AUTH_%(tenant_id)s" --adminurl "http://10.1.1.1:8080/v1/AUTH_%(tenant_id)s" --internalurl "http://10.1.1.1:8080/v1/AUTH_%(tenant_id)s"
佈署Swift儲存節點
- 物件儲存服務存放物件於檔案系統上!檔案系統通常也連結數個節點!
- 檔案系統通常被格式化成 ext4 或 xfs 格式,並掛載在/srv/node 目錄下!
- 任何被指定的儲存節點,必須要安裝下列套件:openstack-swift-object , openstack-swift-container, openstack-swift-account
- # mkdir -p /srv/node/z{1,2}d1
- # cp /etc/fstab /etc/fstab.orig
- # echo "/dev/vdc1 /srv/node/z1d1 xfs defaults 0 0" >> /etc/fstab
- # echo "/dev/vdd1 /srv/node/z2d1 xfs defaults 0 0" >> /etc/fstab
- # mount -a
- # df -h | grep srv
- # chown -R swift:swift /srv/node
- # restorecon -rv /srv
- # cp /etc/swift/*.conf /root/swift_orig/
- # crudini --set /etc/swift/swift.conf swift-hash swift_hash_path_prefix $(openssl rand -hex 10)
- # crudini --set /etc/swift/swift.conf swift-hash swift_hash_path_suffix $(openssl rand -hex 10)
- # cp /etc/swift/swift.conf /etc/swift/swift.conf.orig2
- # crudini --set /etc/swift/account-server.conf DEFAULF bind_ip 10.1.1.1
- # crudini --set /etc/swift/container-server.conf DEFAULF bind_ip 10.1.1.1
- # crudini --set /etc/swift/object-server.conf DEFAULF bind_ip 10.1.1.1
- Rings決定資料儲放在儲存節點叢集的哪一個地方
- Rings 需要三個檔案:Object, Container, Account Services
- Rings 檔案可由 swift-ring-builder 工具依下列三個參數產生:
- Partition power
- Replica count
- min_part_hours
- zone是第四個參數,用來增加硬體到 Rings
- 範例:# swift-ring-builder /etc/swift/account.builder add z1-10.1.1.1:6202/accounts 100
- /etc/swift 目錄內容,需要複製到每個節點的 /etc/swift 目錄
- # source /root/keystonerc_admin
- # swift-ring-builder /etc/swift/account.builder create 12 2 1
- # swift-ring-builder /etc/swift/container.builder create 12 2 1
- # swift-ring-builder /etc/swift/object.builder create 12 2 1
- # for i in 1 2; do
>swift-ring-builder /etc/swift/account.builder add z${i}-172.25.0.10:6202/z${i}d1 100
>done - # for i in 1 2; do
>swift-ring-builder /etc/swift/container.builder add z${i}-172.25.0.10:6201/z${i}d1 100
>done - # for i in 1 2; do
>swift-ring-builder /etc/swift/object.builder add z${i}-172.25.0.10:6200/z${i}d1 100
>done - # swift-ring-builder /etc/swift/account.builder rebalance
- # swift-ring-builder /etc/swift/container.builder rebalance
- # swift-ring-builder /etc/swift/object.builder rebalance
- # ls /etc/swift/*gz
- # systemctl enable openstack-swift-account
- # systemctl enable openstack-swift-container
- # systemctl enable openstack-swift-object
- # openstack-service start swift
- # chown -R root:swift /etc/swift
- # tail /var/log/messages
- 物件儲存代理服務用來決定哪一個節點被引導去存取
- # cp /etc/swift/proxy-server.conf /etc/swift/proxy-server.conf.orig
- # crudini --set /etc/swift/proxy-server.conf filter:authtoken admin_tenant_name services
- # crudini --set /etc/swift/proxy-server.conf filter:authtoken auth_host 10.1.1.1
- # crudini --set /etc/swift/proxy-server.conf filter:authtoken auth_uri http://10.1.1.1:5000
- # crudini --set /etc/swift/proxy-server.conf filter:authtoken admin_user swift
- # crudini --set /etc/swift/proxy-server.conf filter:authtoken admin_password redhat
- # systemctl start memcached
- # systemctl start openstack-swift-proxy
- # tail /var/log/messages
- # systemctl enable memcached
- # systemctl enable openstack-swift-proxy
- 利用 swift 可以查詢儲存空間
- # cd /etc/swift
- # grep bind_port *.conf
- # cd
- # ls -al /srv/node/
- # swift-ring-builder /etc/swift/account.builder
- # swift-ring-builder /etc/swift/container.builder
- # swift-ring-builder /etc/swift/object.builder
- # vim /etc/swift/proxy-server.conf
[DEFAULT]
bind_port = 8080
[pipeline:main]
pipeline = ... keystone ...
[app:proxy-server]
allow_account_management = true
account_autocreate = true
[filter:keystone]
operator_roles = admin, SwiftOperator
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
admin_tenant_name = services
admin_user = swift
admin_password = redhat
auth_host = 10.1.1.1
auth_port = 35357
auth_protocol = http
signing_dir = /tmp/keystone-signing-swift
auth_uri = http://10.1.1.1:5000
- # openstack-service restart swift
- # source /root/keystonerc_admin
- # keystone user-get swift
- # keystone role-list
- # keystone service-get swift
- # keystone catalog --service object-store
- # swift list
- # swift post c1
- # swift post c2
- # echo "hello" > data1.file
- # swift upload c1 data1.file
- # echo "hello2" > data2.file
- # swift upload c1 data2.file
- # head -c 1024 /dev/urandom > data3.file
- # swift upload c2 data3.file
- # swift list
- # swift list c1
- # swift list c2
- # find /srv/node/ -type f -name "*data"
- # find /srv/node/ -type f -name "*data" -exec file {} \;
- # cat /srv/node/z1d1/....
練習6:
2015年12月8日 星期二
RHEL 的 OpenStack (四)--管理 Keystone 驗證服務
Keystone 驗證服務
使用 keystone 指令管理使用者
練習2:利用keystone指令管理使用者
Keystone 認證服務的除錯
- Keystone 包含的項目:
- 租賃戶(Tenants)
- 角色(Rules)
- 使用者(Users)
- 服務(Services)
- 結束點(End points)
- 分類 (Catalog)
- 權杖 (Tokens)
- 增加服務到 Keystone 服務分類以及註冊結束點
- # keystone service-create --name=SERVICENAME --type=SERVICETYPE --description="DESCRIPTION OF SERVICE" ※PS: type 共有 identity , compute, network, image , object-store
- # keystone endpoint-create --service-id SERVICEID --publicurl 'URL' --adminurl 'URL' --internalurl 'URL'
※PS: service-id 可由上一項指令取得!
- # keystone service-list
- 移除服務以及結束點
- # keystone endpoint-list
- # keystone endpoint-delete ENDPOINTID
- # keystone service-list
- # keystone service-delete SERVICEID
- OpenStack 設定檔
- # crudini --set /etc/keystone/keystone.conf DEFAULT admin_token abcdef1234567890
- Option: --set, --get, --del
- Configuration file : OpenStack configuration file 的位置
- Section : 設定檔內的項目名稱,如:[DEFAULT]
- Parameter : 設定用的參數
- Value : 參數值
- # crudini --set /etc/keystone/keystone.conf DEFAULT admin_token abcdef1234567890
- 登入 Keystone 主機
- 在 Keystone 服務中,啟用 Administrator 權力
- # cat /root/keystonerc_adminexport OS_USERNAME=adminexport OS_TENANT_NAME=adminexport OS_PASSWORD=redhatexport OS_AUTH_URL=http://10.1.1.1:5000/v2.0/export OS_REGION_NAME=RegionOneexport PS1='[\u@\h \W(keystone_admin)]\$'
- # source /root/keystonerc_admin
- # cat /root/keystonerc_admin
- 檢查 Keystone 是否設定成 OpenStack 的服務
- # keystone service-list | grep keystone
- # keystone catalog --service identity
- 所有 OpenStack 的服務,其後端資料與訊息的設定值,應存放在 /etc/SERVICE_NAME/SERVICE_NAME.conf 檔案內!
- # grep "connection=mysql" /etc/keystone/keystone.conf
- # grep rabbit /etc/keystone/keystone.conf
- 可連進 mysql 資料庫,確認一下 Keystone 所使用的資料表格!
- # mysql -e 'use keystone; show tables;'
使用 keystone 指令管理使用者
- keystone 指令可用來管理使用者
- # source ~/keystonerc_admin
- # keystone user-create --name USERNAME --pass PASSWORD
- # keystone user-list
- # keystone user-delete USERID
- 利用 keystone 指令來管理租賃戶
- # keystone tenant-create --name TENANTNAME
- # keystone tenant-list
- # keystone tenant-delete TENANTID
- 角色也可以利用 keystone 來定義
- admin: 擁有管理者權限的角色
- member: 專案成員的角色
- # keystone role-create --name Member
- 使用者連結租賃戶與角色
- # keystone user-role-add --user-id USERID --role-id ROLEID --tenant-id TENANTID
- 其他 keystone 指令
- # keystone help
- # keystone help user-role-list
練習2:利用keystone指令管理使用者
- # source /root/keystonerc_admin
- # keystone user-list
- # keystone role-list
- # keystone tenant-list
- # keystone user-role-list --user admin --tenant admin
- # keystone user-create --name joe --pass redhat
- # keystone tenant-create --name test
- # keystone user-role-add --user joe --role _member_ --tenant test
- # keystone user-role-list --user joe --tenant test
- # vim ~/keystonerc_joeexport OS_USERNAME=joeexport OS_TENANT_NAME=testexport OS_PASSWORD=redhatexport OS_AUTH_URL=http://172.25.0.10:5000/v2.0/export OS_REGION_NAME=RegionOneexport PS1='[\u@\h \W(keystone_joe)]\$ '
- # source ~/keystonerc_joe
- # keystone token-get
Keystone 認證服務的除錯
<<重點觀念>>
- 所有到達不同OpenStack服務API的要求,必須流經由 Keystone 所提供的驗證與授權的過程!
- 任何發自於使用者指令的工作要求,均會帶有帳號密碼驗證值、屬哪一租賃戶,以及驗證的URL值!
- 一旦通過身份驗證的使用者,會取得由 Keystone 發給的權杖,進行管理操作!
- 例:一使用者通過使用 Nova 的驗證後,若要由 Glance 服務來產生新的實體,則會在 Nove 服務上,用權杖向 Glance 請求一新的實體影像檔,來進行實體的建立!
- 在除 Keystone 的錯誤時,無法使用 /root/keystonerc_admin 的權限!可經由下列方式,取得兩項權杖參數:
- # export SERVICE_TOKEN=$(crudini --get /etc/keystone/keystone.conf DEFAULT admin_token)
- # export SERVICE_ENDPOINT=http://demo.example.com:35357/v2.0
練習3:
- # source /root/keystonerc_admin
- # glance image-list -->沒找到網頁,認證失敗
- # cat /root/keystonerc_admin
- # vim /root/keystonerc_admin
- # source /root/keystonerc_admin
- # glance image-list -->現在變成不合理的認證值
- # grep -i ERROR /var/log/glance/* --> port 不是 35357
- # grep -i 35357 /etc/glance/glance-api.conf
- # vim /etc/glance/glance-api.conf
auth_port=353572 --> 改成 35357 - # systemctl restart openstack-glance-api
- # glance image-list
RHEL 的 OpenStack (三)--管理 RabbitMQ 訊息肩客
管理 RabbitMQ
練習1:確認 RabbitMQ 設定值內容
RabbitMQ除錯方式
test
練習2:RabbitMQ除錯
- Red Hat OpenStack 利用 RabbitMQ 訊息系統來進行各雲端元件的通訊!
- RabbitMQ 通訊方式有兩種:
- 使用 SASL 方式:不管主機位置,只需要帳密即可!
- 使用 SSL 方式:避免在通訊過程中,被監聽、竊取資料!
練習1:確認 RabbitMQ 設定值內容
- # grep AMQP /root/answers.txt
- # cat /etc/rabbitmq/rabbitmq.config
- # grep rabbit /etc/keystone/keystone.conf
RabbitMQ除錯方式
test
練習2:RabbitMQ除錯
- # source /root/keystonerc_admin
- # nova service-list
- # grep -i ERROR /var/log/nova/nova-scheduler.log
- # systemctl status rabbitmq-server
- # grep -i rabbit_port /etc/nova/nova.conf
- # ss -nlp | egrep beam.smp
- #grep -i RABBITMQ_NODE_PORT /etc/rabbitmq/rabbitmq-env.conf
- # vim /etc/rabbitmq/rabbitmq-env.conf
- 修改 RABBITMQ_NODE_PORT=3333 => 5672
- # systemctl restart rabbitmq-server
- # tail /var/log/nova/nova-scheduler.log
- # nova service-list
- # systemctl restart openstack-nova-compute
2015年12月7日 星期一
RHEL 的 OpenStack (二)--使用 Horizon Web 介面佈署
- Horizon dashboard 是一個用來管理 OpenStack 平台的 web 介面!
- Horizon Web 介面提供對每一個 OpenStack 專案 API 的通訊方式,用以取代 CLI 介面的操作
利用 Horizon 建立專案
- 登入 Horizon Web 介面
- 登入網址:https://10.1.1.1/dashborard
- 帳密: /root/keystonerc_admin 內的 OS_PASSWORD 或是 /root/answers.txt 內的 CONFIG_KEYSTONE_ADMIN_PW
- 設定信任憑證後,即可使用!
- 設定安全存取方式:
- 使用者帳密限制
- 連線位置限制:
設定檔: /etc/openstack-dashboard/local_settings 內的 ALLOWED_HOSTS 限定連線位置!
參數: www.example.com , .example.com , *
- 專案工作:
- 一個專案(Project)就是一個租賃戶(tenant),每個租賃戶都可以有數個使用者以及使用的資源!
- 單一雲端系統中,每個專案或租賃戶是互不干擾!
- 每一個租賃戶可以設定使用的資源限制!
- 專案用於 web 介面,租賃戶用於 CLI 介面!所以,專案與租賃戶同意!
- 更換憑證或憑證失效問題:在 OpenStack 已被重裝的狀況下,使用舊憑證,會產生連結上的錯誤,所以,需要重新製作新的憑證,並重新載入 browser 中!
- 在 firefox browser 中,按下 Alt 鍵
- 選擇 Edit -> Perferences
- 選擇 Advanced 圖示後,選擇 Certificates 標籤
- 選擇 View Certificates 按鈕
- 在 Authorities 標籤內,找到 openstack CA 憑證,刪除...
- 在 Servers 標籤內,找到 openstack 相關憑證,刪除...
- 關閉 Prefences 視窗
- 再按 Alt 打開選單,選擇 History -> Clear Recent History ...,清除所有記錄
- 重新再接受新的憑證資料
練習1:在 Horizon 建立新專案
練習資料如下表:
解決步驟:
在 Horizon 建立新的使用者
練習2:在 Horizon 建立新專案
練習資料如下表:
解決步驟:
練習資料如下表:
參數名稱 | 參數值 |
Name | project1 |
Description | Project for project1 |
Quota | 4 vCPUs, 4 instances, 4096MB RAM, 2 floating IPs |
解決步驟:
- 打開 firefox browser,連至 https://10.1.1.1/dashboard
- 輸入帳號:admin,密碼:redhat
- 找到 Identity 標籤(在網頁的最上方,有 Project / Admin / Identity) ,按下後,選擇 Projects 子標籤!
- 選擇 + Create Project 按鈕!
- 在 Project Information 標籤下,輸入 Name以及 Description !
- 切換至 Quota 標籤下,設定相關資源,其它設定值不動!
- 按下 Create Project 按鈕即可!
在 Horizon 建立新的使用者
- 在 Horizon web 介面中,可新增、修改、刪除、查詢使用者
- 使用者角色預設有兩種:
- 群組角色:附加於專案中
- 管理者角色:管理雲端系統,有別於admin帳號!
練習2:在 Horizon 建立新專案
練習資料如下表:
參數名稱 | 參數值 |
Username | user1 |
root@servera.pod0.example.com | |
Password | redhat |
Primary project | project1 |
Role | _member_ |
解決步驟:
- 以 admin 帳號登入 https://10.1.1.1/dashborad
- 選擇 Identity 標籤,選擇 Users 子標籤
- 選擇 + Create User 按鍵
- 輸入上面表格資料
- 按下 Create User 按鍵
在 Horizon 管理風格(flavors)
- 在佈署新的實體(instance)之前,可先針對實體規格進行概要式的設定
- 實體中的參數包含 vCPU數量、記憶體大小、硬碟空間等規格!
練習資料如下表:
參數名稱 | 參數值 |
Name | m2.tiny |
ID | auto |
vCPUs | 1 |
RAM MB | 1024 |
Root disk GB | 10 |
Ephemeral disk GB | 2 |
Swap disk MB | 512 |
解決步驟:
- 以 admin 帳號登入 https://10.1.1.1/dashborad
- 選擇 Admin 標籤,選擇 System 標籤,再選 Flavors 子標籤
- 在 m1.tiny 列,按下 Edit Flavor 按鍵,修改 Root Disk (GB) 空間值至 10GB ,再按下 Save 按鍵!
- 在同一 Flavors 子標籤下,按 + Create Flavor 按鍵!
- 輸入上表資料
- 再按下 Create Flavor 按鍵!
- 在產生新的實體之後,Horizon 可以開啟與管理這些實體
- 在啟動一個實體之前,需要針對實體進行設定:
- 建立並且上傳影像檔,包含給實體用的作業系統與軟體
- 設定安全群組(例:開啟防火牆的 port到實體,或在實體上啟動指定的服務)
- 建立SSH 金鑰對(連進實體內用的)
- 配置 IP 位置,讓外部網路可連到實體!
網路參數資料如下表:
參數名稱 | 參數值 |
Private network name | private |
Private subnet information |
|
Public network name | public |
Public subnet information |
|
Public subnet detail |
|
Router name | router1 |
External network | public |
Router gateway | public |
IP to allocate for the instance | 10.1.1.26 |
Security group name | sec1 |
Security group description | Web and SSH |
Security group permissions | Allow SSH(TCP/22) and HTTPS(TCP/443) from CIDR 0.0.0.0/0, and HTTP(TCP/80) from the sec1 source group |
實體參數資料如下表:
參數名稱 | 參數值 |
SSH key pair name | key1 |
Image name | image1 |
Image location | http://10.1.1.254/pub/images/small.img |
Image format | QCOW2 - QEMU emulator |
Image settings | No minimum disk, minimum 512 MB RAM, public |
Instance image | image1 |
Instance name | small |
Instance flavor | m1.tiny |
Instance key pair | key1 |
Instance security group | sec1 |
Instance floating IP address | 10.1.1.26 |
卷冊(volume)參數資料如下表:
參數名稱 | 參數值 |
Volume name | myvol1 |
Volume description | myvol1 volume |
Volume size | 2 GB |
Volume snapshot name | myvol1-snap1 |
Volume snapshot description | myvol1-snap1 snapshot |
解決步驟:
- 以 user1 帳號重新登入 https://10.1.1.1/dashborad
- 設定網路參數:在實體被啟動之前,必須先設定好網路設定!
- 設定私人網路
- 選擇 Project 標籤下的 Network 下拉式選單,再選擇 Networks 項目!
- 按下 + Create Network 按鈕!
- 輸入網路名稱:private ,再按下 Next 按鈕!
- 在 Subnet 步驟裡,輸入子網路名稱:subpriv、網路位址:192.168.0.0/24 以及 IP 版本名稱:IPv4
- 按下 Next 按鍵後,離開子網路細項設定,並按下 Create 按鈕!
- 設定公眾網路
- 接續上一階段設定
- 按下 + Create Network 按鈕!
- 輸入網路名稱:public ,再按下 Next 按鈕!
- 在 Subnet 標籤裡,輸入子網路名稱:subpub、網路位址:10.1.1.0/24、IP 版本名稱:IPv4,以及 GateWay IP : 10.1.1.254
- 按下 Next 按鍵,進入子網路細項設定!
- 反勾選 Enable DHCP 後,在 allocation pool 中,輸入 10.1.1.25, 10.1.1.99!
- 離開子網路細項設定,並按下 Create 按鈕!
- 設定路由
- 在 Network 標籤中,選擇 Routers 子標籤!
- 按下 + Create Router 按鈕!
- 輸入路由器名稱:router1 ,再按下 Create Router 按鈕!
- 設定外部網路:只能由 admin 帳號進行設定
- 以 admin 帳號重新登入 https://10.1.1.1/dashborad
- 在最上方的選項中,選擇 System 標籤!
- 在列表中,按下 public 資料列的 Edit Network 按鈕!
- 勾選 External Network 項目,再按下 Save Changes 按鈕!
- 將內部網路對應上外部網路
- 以 user1 帳號重新登入 https://10.1.1.1/dashborad
- 在最上方的 Admin 選項中,選擇 Project 標籤!
- 下拉 Network 選單,選擇 Routers 項目!
- 按下 router1 資料列 Set Gateway 按鈕!
- 在 External Network 選單中,選擇 public 項目,再按下 Set Gateway 按鈕!
- 按下 router1 的連結後,再按下 + Add Interface 按鈕
- 在 Subnet 選單中,選擇 private: 192.168.0.0/24 (subpriv)項目,再按下 Add Interface 按鈕
- 最後,需要驗證一下設定,是否兩邊的網路,都有連上路由器!在 Network 標籤下,選擇 Network Topology 子標籤!
- 檢查 private 與 public 兩段網路,是否有連上 router1
- 設定私人網路
- 設定存取安全參數:建立浮動IP位址、安全群組與 SSH金鑰對
- 以 user1 帳號重新登入 https://10.1.1.1/dashborad
- 在最上方的 Project 選項中,選擇 Compute 下拉選單,之後,選擇 Access & Security 項目!
- 選擇 Floating IPs 標籤,並按下 Allocate IP to Project 按鈕!
- 在 pool 項目中,選擇 public,並且按下 Allocate IP 按鈕!
- 在 Access & Security 項目下,選擇 Security Group 標籤!
- 按下 +Greate Security Group 按鈕!
- 在 Name 項目中,輸入 sec1,在 descriptions 中,輸入 Web and SSH,再按下 Create Security Group 按鈕
- 在列表中,選擇 sec1 資料列,按下 Manage Rules 按鈕!
- 按下 + Add Rule 按鈕,在 Rule 下拉選單中,選擇 SSH,並且保留 Remote 以及 CIDR 預設值!
- 按下 Add 按鈕!
- 按下 + Add Rule 按鈕,在 Rule 下拉選單中,選擇 HTTPS,按下 Add 按鈕!
- 再做一次上述的步驟,只是換成選擇 HTTP 項目!在 Remote 項目中,下拉選擇 Security Group 項目,在 Security Group 中,選擇 sec1 (current)項目,並且設 Ether Type 為IPv4,再按下 Add 按鈕!(來源來自 sec1 時,做這樣子的改變!)
- 回到 Compute 標籤下,選擇 Access & Security 子標籤!
- 選擇 Key Pairs 項目,並且按下 +Create Key Pair 按鈕!
- 在 Key Paris Name 中,輸入 key1 ,並且按下 Create Key Pair 按鈕
- 在跳出視窗中,選擇 Save File 選項,並按下 OK 按鈕,以便存下 key1.pem 檔案!
- key1.pem 檔案應存放在 Downloads 目錄下!
- 建立實體
- 使用 Compute 標籤,再選擇 Images 子標籤!
- 按下 + Create Image 按鈕,在 name 欄位中,輸入 images1 !在 Image Location 欄位中,輸入下載系統影像檔的網址!
- 設定影像檔的格式是 QCOW2 - QEMU Emulator ,並且按下 Create Image 按鈕!(等到 active 為止)
- 檢查主機是否支援巢狀式虚擬化技術: # ls /dev/kvm !如果有該檔案,表示可以使用巢狀式虚擬化技術!(下一步驟是開始 kvm 的方式,如果沒有,就跳過下一步驟)
- 修改 /etc/nova/nova.conf 檔案內容:
virt_type=kvm =>可用指令改:crudini --set /etc/nova/nova.conf libvirt virt_type kvm
#openstack-service restart nova - 使用 Compute 下的 Instances 子標籤!
- 按下 Launch Instance 按鈕!在 Details 標籤中,輸入 Instance Name 為 small ,並且選擇 m1.tiny Flavor !
- 在 Instance Boot Source 下拉式選單中,選擇 Boot from images 項目
- 選擇 images1 做為 Image Name
- 在 Access & Security 標籤中,確認金鑰對是 key1!
- 選擇 sec1 為 security group ,反勾選 default security group
- 在 Networking 標籤中,按下 + 按鈕到 private 網路
- 按下 Launch 按鈕
- 當 small 項目列表中的 Status 為 Active 時,即可按 Actions 內的下拉選單,選擇 Associate Floating IP
- 在 IP Adress 欄位中,選擇 10.1.1.26,並且在 Port to be associated 欄位中,選擇 small: 192.168.0.2,按下 Associate 按鈕!
- 在 small 項目中,在 small名稱上按右鍵,選擇 Open Link in New Tab
- 在 firefox 新的標籤中,選擇 Console 標籤,再按下 Click here to show only console 的超連結,並且同意接受憑證!
- 可利用 ssh 到 10.1.1.26 主機中!
# ssh -i Downloads/key1.pem root@10.1.1.26
# ssh -i Downloads/key1.pem cloud-user@10.1.1.26
- 可以利用 ping 的方式,ping 一下已經啟動的實體!(應該 ping 不到,該要如何處理?)
- 增加儲存卷冊:增加logical volume、快照以及附加卷冊給實體!
- 在 Compute 下拉選單中,選擇 Volumes 子標籤,並按下 + Create Volume 按鈕
- 輸入 Volume Name 為 myvol1 ,description 欄位內,輸入 myvol1 volume,size 為 2GB!其他保留預設值,按下 Create Volume 按鈕
- 建完 volume 之後,即可建立快照!在 Volumes 標籤中,在 Actions 欄位中,下拉選單,選擇 Create Snapshot!
- 在 name 欄位中,輸入 myvol1-snap1 ,在 description 欄位內,輸入 myvol1-snap1 snapshot ,按下 Create Volume Snapshot 按鈕!
- 附加 volume 到執行中的實體!前往 Volumes 標籤,下拉 Actions 欄位內的選單,選擇 Edit Attachments 項目!
- 在 Attach to Instance 欄位中,下拉選擇 small 實體,再按下 Attach Volume 按鈕!
- 使用 ssh 登入 small 實體,利用 lsblk 查看硬碟空間!
- 移除方式
- 在 Instances 子標籤中,勾選 small 項目,按下 Terminate Instances 按鈕
- 在彈出式視窗中,再按下 Terminate Instances 按鈕,進行確認
- 切換至 Volumes 標籤,選擇 Volume Snapshots 標籤!勾選快照項目,按下 Delete Volume Snapshots 按鈕!
- 在彈出式視窗中,再按下 Delete Volume Snapshots 按鈕,進行確認
- 回到 Volumes 標籤,勾選券冊項目,按下 Delete Volumes 按鈕!
- 在彈出式視窗中,再按下 Delete Volumes 按鈕,進行確認
RHEL 的 OpenStack (一)--利用 PackStack 安裝OpenStack
使用 PackStack 套件:
最低硬體需求:
<Cloud Controller Node>
<Compute Node>
<Ceph Storage Node>
PackStack answer file 參數表:
Open vSwitch 設定:
練習1:利用 OpenStack 安裝 Control Node!
練習2:利用 OpenStack 新增一個 Compute Node!
參考資料:
課後Lab:利用 RDO 網站上的 PackStack 來安裝 OpenStack
參考網址:
- 使用 answer file 方便管理者,利用安裝器設定系統參數
- 使用指令:packstack
- --gen-answer-file:可產生 answer file
- --answer-file:可將 answer file ,送給安裝器,以利於安裝 OpenStack!
- -d:安裝過程除錯!
- 安裝過程中,如果有錯誤,在除錯完成之後,應重新執行 pactstack !
- 記錄檔:
- /var/tmp/packstack*/
- /var/log/messages
- /var/log/yum.log
最低硬體需求:
<Cloud Controller Node>
- CPU:64-bit X86 Intel-VT or AMD-v
- Memory:2GB
- HDD:100GB
- NIC:GigaEthernet*2
<Compute Node>
- CPU:64-bit X86 Intel-VT or AMD-v
- Memory:2GB
- HDD:50GB
- NIC:GigaEthernet*2
<Ceph Storage Node>
- CPU:64-bit X86 Intel-VT or AMD-v
- Memory/HDD:per 1TB disk space / mininum 1GB RAM
- NIC:GigaEthernet*2
PackStack answer file 參數表:
參 數 | 說 明 |
※CONFIG_HEAT_INSTALL=y | 安裝/啟動 Heat Orchestration 服務!需要設定密碼,以及開啟其他項服務! |
※CONFIG_NTP_SERVERS=10.1.1.1 | 指定NTP伺服器,用來同步時間! |
※CONFIG_KEYSTONE_ADMIN_PW=redhat | 設定 keystone 管理者 admin 密碼! |
※CONFIG_DEFAULT_PASSWORD=redhat | 針對所有出入口設定相同的密碼! |
※CONFIG_CINDER_VOLUMES_CREATE=n | 是否建立Cinder 中的Volume Group ,用來作為檔案式的儲存媒介! |
※CONFIG_LBAAS_INSTALL=y | 是否開啟利用 Packstack 來設定 Neutron 中的 Load-Balancer as a Service! |
※CONFIG_NEUTRON_METERING_AGENT_INSTALL=y | 設定 Neutron metering agent,使得 Neutron 資訊可送進Ceilometer telemetry 服務 |
※CONFIG_NEUTRON_FWAAS=y | 是否開啟 Neutron 設定 Firewall as a Service! |
※CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan | 設定 Neutron ML2 插入的驅動程式!如果有多個項目,可用逗號分開! |
※CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan | 設定 Neutron ML2 租戶的網路類型!如果有多個項目,可用逗號分開! |
※CONFIG_NEUTRON_ML2_VLAN_RANGES=physnet1:1:1000 | 設定 Neutron 使用的 Vlan 範圍!如果有多個項目,可用逗號分開! |
※CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth1 | 設定實體網路介面對應至 Neutron OVS 橋接網路! |
※CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-eth1:eth1 | 設定 Neutron OVS 橋接網路至實體網路介面! |
※CONFIG_HEAT_CFN_INSTALL=y | 是否將PackStack安裝設定 Heat CloudFormation API! |
※CONFIG_HORIZON_SSL=y | 為 Horizon 啟動 SSL ! |
※CONFIG_PROVISION_DEMO=n | 是否提供展示或測試! |
※CONFIG_SWIFT_INSTALL=n | 是否安裝/啟動Swift儲存服務! |
Open vSwitch 設定:
- OpenStack 以驅動程式形態,支援 Open vSwitch 功能!
- OpenStack 常用的兩種橋接網路形態:
- br-int:integration bridge 專用於對進出實體的網路封包,執行 Vlan 貼標籤或不貼標籤功能!
- br-ex:external bridge 專用於對進出實體的額外網路封包,按規定路徑遞送!
- 範例:假設 eth0 是 br-ex 的一個 port ,而且有對外連接!
所以,需新增設定檔:/etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs ;;宣告該硬體使用 Open vSwitch
TYPE=OVSBridge ;;宣告該硬體為 OVS 橋接器
BOOTPROTO=static
IPADDR=172.25.0.10
NETMASK=255.255.255.0
GATEWAY=172.25.0.254
網路卡 eth0 設定檔:/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=OVSPort ;;宣告該硬體為 OVS 橋接器上的一個 port
DEVICETYPE=ovs
OVS_BRIDGE=br-ex ;;宣告該硬體附屬在哪一個 OVS 橋接器上
※PS:使用 RHEL OpenStack 平台時,必須關閉 NetworkManager 服務,改用 network 服務! - 設定完成,需要重新啟動 network 服務!
# systemctl restart network.service
利用下列指令來檢查
# ovs-vsctl show
如果有錯誤,會顯示無網路,請確認設定檔內的設定是否無誤!接下來可刪除錯誤的 bridge !
# ovs-vsctl del-br eth0
練習1:利用 OpenStack 安裝 Control Node!
- # yum install openstack-packstack
- # packstack -h | less
- # packstack --gen-answer-file /root/answers.txt
- # vim /root/answers.txt
需修改的項目如上表所列! - # packstack --answer-file /root/answers.txt
※PS:這步驟執行完,將提示下列資訊:
- 建立 /root/keystonerc_admin,並提醒你要去公告這個檔案!
- 記得修改 /etc/httpd/conf.d/ssl.conf 檔案內的憑證檔目錄位置!
- OpenStack DashBoard : https://10.1.1.1/dashboard,帳密在 /root/keystonerc_admin 內
- Nagios : http://10.1.1.1/nagios, username : nagiosadmin , 密碼則是一大串
- 安裝的相關記錄檔目錄:/var/tmp/packstack/
- # openstack-status
- # cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root/
- # cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/networkk-scripts/ifcfg-br-ex
- # vim /etc/sysconfig/network-scripts/ifcfg-br-ex
- # vim /etc/sysconfig/network-scripts/ifcfg-eth0
- # systemctl restart network.service
- # ovs-vsctl show
- # hostnamectl set-hostname servera.pod0.example.com
練習2:利用 OpenStack 新增一個 Compute Node!
- # vim /root/answers.txt
修改:
CONFIG_COMPUTE_HOSTS=10.1.1.1, 10.1.1.2 - # packstack --answer-file /root/answers.txt
※PS1:記得要先開 10.1.1.2 這部機器,並且開放 root 可以 ssh 連線!
※PS2:這一步驟也要一些時間(重新運作)! - # ssh serverb
參考資料:
- http://www.server-world.info/en/note?os=CentOS_7&p=openstack_kilo2&f=12
- https://openstack.redhat.com/install/quickstart/
- https://access.redhat.com/articles/1127153
課後Lab:利用 RDO 網站上的 PackStack 來安裝 OpenStack
參考網址:
- https://www.rdoproject.org/install/quickstart/
- http://www.flashguides.co.uk/guide/Installing_OpenStack_Kilo_on_CentOS_with_Packstack
- http://www.server-world.info/en/note?os=CentOS_7&p=openstack_kilo2&f=12
2015年12月3日 星期四
RHEL7 網路指令
RHEL 7 的網路設定:使用 NetworkManager 套件
- 網路卡名稱:
- 網卡類型:
- en : Ethernet 網路卡
- wl : Wireless (WiFi)網路卡
- ww : Wireless WAN 網路卡(3G、4G LTE)
- 插槽名稱:
- o : on-board 網路卡
- s : 可熱抽拔插槽 (slot)
- p : PCI 插槽配置位置
- 順序號碼:
- 通常從 0 開始數起,但是嵌在主機板上的 on-board 裝置則是從 1 開始!
例1: enp0s2 : 在第一個 PCI 位置上第三個插槽上的乙太網路卡! - 網卡類型:
例2: eno1 : 第一個on-board 的網路卡
※PS:如有安裝 biosdevname 套件,或是設定 udev 客製化名字,可改變網路卡名稱!
- 網路設定相關檔案:
- 網路設定檔儲放目錄:/etc/sysconfig/network-scripts
- 設定檔 ifcfg-xxxx
- BOOTPROTO=none | static | dhcp
- IPADDR0=192.168.1.5
- PREFIX0=24
- GATEWAY0=192.168.1.254
- DEFROUTE=yes
- DNS1=8.8.8.8
- DEVICE=eth0
- NAME="System eth0"
- 網路設定相關指令:
- Gnome 圖形介面設定:
- nmtui 指令:文字模式下的選單操作介面
- nmcli 指令:標準文字操作指令
<顯示、查詢方式>
- #nmcli con show :顯示所有網路介面清單!
--active :只顯示活(啟)動中的網路介面!
"enp0s2" :顯示指定介面所有相關的設定參數! - #nmcli dev status :顯示網路介面卡硬體連線狀態!
"enp0s2" :顯示指定介面所有相關的硬體設定參數!
<新增網路連結方式>
例:新增一個網路連結(需要先有網路卡)- #nmcli con add con-name "default" type ethernet ifname eth0
表示新增一網路連結,名為:"default",使用 eth0 乙太網路卡,IP 位址使用DHCP模式! - #nmcli con add con-name "static" ifname eth0 autoconnect no type ethernet ip4 192.168.1.10/24 gw4 192.168.1.254
表示新增一網路連結,名為:"static",使用 eth0 乙太網路卡自動連結網路!IP 位址是 192.168.1.10,預設閘道為 192.168.1.254,不使用DHCP模式! - #nmcli con up "default" :表示啟動 "default" 這個網路連結!(會進行 DHCP 運作)
- #nmcli con up "static" :表示啟動 "static" 這個網路連結!
※PS:查詢相關參數方式 #nmcli con add help ! - #nmcli con show :顯示所有網路介面清單!
- #nmcli con mod "static" connection.autoconnect no
關閉自動連結! - #nmcli con mod "static" ipv4.dns 192.168.1.10
指定 DNS Server! - #nmcli con mod "static" +ipv4.dns 192.168.1.100
利用+/- 符號來增加、減少設定! - #nmcli con mod "static" ipv4.addresses "192.168.1.5/24 8.8.8.8"
取代原來的IP、Gateway 設定值! - #nmcli con mod "static" +ipv4.addresses 10.1.1.1
追加一個新的 IP位址,但沒有設定 Gateway !!
<修改網路連結方式>
<nmcli 指令總結>指令名稱 說 明 nmcli dev status nmcli con show nmcli con up "connection ID" nmcli con down "connection ID" nmcli dev dis "device name" nmcli net off nmcli con add ... nmcli con mod "connection ID" nmcli con del "connection ID"
- 網路測試相關指令:
- ip 指令
- #ip address show eth0:顯示網卡 eth0 的 IP 位址。
- #ip -s link show eth0:顯示網卡 eth0 MAC層的相關資料,並統計傳送(Tx)與接收(Rx)封包數量、大小等相關訊息。
- #ip route:顯示目前網路的路由設定。
- ping 指令
- #ping -c3 192.168.1.5 :表示要送 ICMP 封包三次給指定的 IP!
- traceroute、tracepath 指令
- #tracepath access.redhat.com :表示要追踪到指定站台之間,所經過的IP或是介面名稱!
-I:指定用 ICMP 封包送!
-T:指定用 TCP 封包送!
不指定,表示使用 UDP 封包!
- #tracepath access.redhat.com :表示要追踪到指定站台之間,所經過的IP或是介面名稱!
- ss 指令:類似 netstat 指令
- #ss -ta :表示顯示本機 socket 的統計!可顯示、統計網路 IP 位址與對應 port 的連線情形!
參 數 說明 -n 以數字來取代介面名稱與 port 號! -t 顯示使用 TCP 的 socket ! -u 顯示使用 UDP 的 socket ! -l 只顯示監聽中的 socket ! -a 顯示所有的 socket ! -p 顯示 socket 執行序的 ID 號碼!
- #ss -ta :表示顯示本機 socket 的統計!可顯示、統計網路 IP 位址與對應 port 的連線情形!
- ip 指令
2015年11月12日 星期四
目錄特殊權限設定(1)
SetGID ::
1. # mkdir /opt/test1
2. # chmod 2770 /opt/test1
3. # chgrp engineers /opt/test1
1. # mkdir /opt/test1
2. # chmod 2770 /opt/test1
3. # chgrp engineers /opt/test1
NTP 網路校時
CentOS7/RHEL7
可參考資料:http://technote.aven-network.com/821/using-chrony-adjust-clock
- # yum install -y chrony
- # vim /etc/chrony.conf server 1.1.1.1 iburst
- # systemctl enable chronyd.service
- # systemctl start chronyd
- # chronyc sourcestats
2015年11月10日 星期二
CentOS/RHEL7 的 SELinux 運作說明與設定
章節目標:
- SELinux 基本運作方式說明!
- 說明 Centos 7 上的 SELinux 運作與設定方式!
- 設定檔:/etc/sysconfig/selinux
- SELINUX=enforcing
- SELINUX=permissive
- SELINUX=disabled
網路設定方式
RHEL 7 網路設定方式:
- 圖形介面
- 應用程式-->系統工具-->設定值-->網路
- 文字介面
- # nmtui-edit
- 檔案設定
- /etc/hostname
- test.example.com
- /etc/resolv.conf
- nameserver 168.95.1.1
- /etc/sysconfig/network-scripts/ifcfg-XXXX
- IPADDR=192.168.1.10
- GATEWAY=192.168.1.254
- PREFIX=24
2015年9月14日 星期一
2015年9月12日 星期六
Linux 語系設定
RHEL7 的語系設定
亦可在 /etc/locale.conf 檔案內設定:
#localectl set-locale LANG=zh_TW.utf8
亦可在 /etc/locale.conf 檔案內設定:
#vim /etc/locale.conf LANG="zh_TW.UTF-8"
2015年9月5日 星期六
2015年9月2日 星期三
Qcow2 轉成 physical disk
Qcow2 轉成 physical disk 的方式:
http://unix.stackexchange.com/questions/30106/move-qcow2-image-to-physical-hard-drive
http://askubuntu.com/questions/195139/how-to-convert-qcow2-virtual-disk-to-physical-machine-and-reversely
http://unix.stackexchange.com/questions/30106/move-qcow2-image-to-physical-hard-drive
http://askubuntu.com/questions/195139/how-to-convert-qcow2-virtual-disk-to-physical-machine-and-reversely
2015年8月28日 星期五
Pythoon 網路資源
- http://www.fullstackpython.com/best-python-resources.html?utm_content=buffer455c3&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer
- http://pydoing.blogspot.tw/2012/10/python-tutorial.html
2015年8月12日 星期三
利用 VirtualBox 將 RHEL 7 安裝至 USB 隨身碟
利用 VirtualBox 將 RHEL 7 安裝至 USB 隨身碟
參考資料:
- 在 Virtual Box 官網上,下載 VirtualBox 5.0 Oracle VM VirtualBox Extension Pack。
- 利用「檔案」-->「喜好設定」-->「擴充套件」-->在右方的圖案中,選擇「Adds new page」-->加入上述步驟下載的檔案-->「確定」!
- 在 Virtual Box 中,新增一部虚擬主機。
- 在設定值中,在「存放裝置」中,設定好光碟!
- 在「USB」項目中,勾選啟用USB控制器後,增加指定的USB隨身碟進入!
- 在「系統」中,選擇光碟開機後,按下確定!
- 光碟開機後,即可按正常狀態,將 RHEL 7 系統,安裝至 USB 中!
- 安裝完成後,在重開機之後,會一時找不到開機媒體,此時,先將虚擬關機!
- 使用系統管理員權限打開命令提示字完視窗,並切換至 VirtualBox 程式所在目錄!
- 輸入一長串指令:VBoxManage internalcommands createrawvmdk -filename D:\VirtualBox\usb.vmdk -rawdisk \\.\PhysicalDrive4
- 「D:」表示D磁碟機!「VirtualBox」表示在D磁碟機建立的資料夾!資料夾必須預先建立完成!「usb.vmdk」表示虛擬硬碟的名稱,名稱可自取!「4」表示隨身碟的磁碟機號碼。
- 在第3步驟新增的虚擬主機上,將 usb.vmdk 加入至「存放裝置」中!
- 開啟虚擬主機即可!
- http://blog.xuite.net/yh96301/blog/64131045-VirtualBox+4.3.4使用USB隨身碟開機
2015年8月11日 星期二
製作可開機USB隨身碟
1. 在 Linux 系統下,可將 ISO檔,輸出至 USB 隨身碟,做成可開機的 USB 開機碟!以下為 Red Hat Enterprise Linux 的範例:
1.https://access.redhat.com/documentation/zh-TW/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-making-usb-media.html
2. 在 Windows 系統下,可利用方便的工具,將 Linux 的 ISO 檔,做成 USB 開機碟!
http://unetbootin.github.io
http://blog.xuite.net/yh96301/blog/66062735-免費將ISO檔案製作為USB開機隨身碟的軟體UNetbootin
2015年8月8日 星期六
建立自已的 Local Repository 軟體倉儲
利用 RHEL7 / CentOS 7 iso 檔,來建立自已的 Local Repository 軟體倉儲,步驟如下:
- 下載 ISO 檔案,並且掛載至 /mnt/cdrom
- 進入 /mnt/cdrom 目錄內,安裝 vsftpd 套件:
#cd /mnt/cdrom/Packages #rpm -ivh vsftpd-<tab>
- 將 /mnt/cdrom 內的目錄,全數複製到 /var/ftp/pub 目錄下:
#cp -a /mnt/cdrom/{*,*.*} /var/ftp/pub/
- 安裝一下 createrepo 套件:
#rpm -ivh createrepo-*
- 執行建立倉儲的指令:
#cd /var/ftp/pub/repodata # cp 76a<tab> server.xml # createrepo -g /var/ftp/pub/repodata/server.xml /var/ftp/pub
- 啟動 vsftpd:
#restorecon -R /var/ftp/pub # systemctl enable vsftpd.service # systemctl start vsftpd.service
- 開啟防火牆:
#firewall-cmd --permanent --add-service=ftp # firewall-cmd --reload
- http://vinizlinux.blogspot.tw/2015/01/complete-guide-for-pxe-server.html
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Configuring_Yum_and_Yum_Repositories.html
聯成學員 Blog 網址
本頁僅例出連線網址,並不列出個人資料與身份!
- http://joshuaredhatlinux.blogspot.tw/?m=1
- http://dantelinuxwarau.blogspot.tw/
- http://pp316931.blogspot.tw/2015_08_01_archive.html
- http://lkt037.blogspot.tw/
- linuxyencheng.blogspot.com
- http://mengchenrhel7.blogspot.tw/
- http://jmlinux123.blogspot.com/
- http://blog.123learngo.com
- http://fuenredhat.blogspot.com/
- http://jackredhat.blogspot.tw/
- http://bert1016.blogspot.tw/
2015年8月5日 星期三
RHEL 7 / CentOS 7 忘記密碼
RHEL 7 / CentOS 7 忘記 root 密碼的解開方式:
- 先確認有沒有鎖 BIOS 或是 「開機選單」密碼,都沒有,才可以利用下列方式解碼!
- 開機選單 --> 按 「e」
- 選擇 linux 開頭的項目名稱
- 在 Linux 開頭項目的行尾,加上 「rd.break」項目
- 按下 Ctrl + x 開機
- 輸入 mount -o remount,rw /sysroot
- 輸入 chroot /sysroot
- 輸入 passwd
- 輸入兩次密碼!注意:密碼輸入過程中,游標是不會移動的!
- 輸入 touch /.autorelabel --> 請注意,不要打錯字!
- 輸入 exit
- 輸入 mount -o remount,ro /sysroot
- 輸入 exit 後,重開機!
只要「黑屏」,表示上述步驟有錯!再來一次即可,不用重裝系統!
如果有鎖 BIOS 密碼,記得替主機板放電!
如果有鎖開機選單密碼,只能使用光碟或 USB 開機!開機後,照上述的步驟方式執行,亦可解開 root 帳密!
訂閱:
文章 (Atom)