OpenStack额外组件

swfit部署

控制节点

  • 对象存储服务

  • 安装软件

yum install openstack-swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached -y
  • 创建用户、项目、端点

openstack user create --domain default --password swift swift
openstack role add --project service --user swift admin
openstack service create --name swift --description "OpenStack Object Storage" object-store
openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(project_id\)s
openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s
openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1
  • 配置代理配置文件

vim /etc/swift/proxy-server.conf
[DEFAULT]
bind_port = 8080
user = swift
swift_dir = /etc/swift
[pipeline:main]
pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
[app:proxy-server]
use = egg:swift#proxy
account_autocreate = True
[filter:keystoneauth]
use = egg:swift#keystoneauth
operator_roles = admin,user
[filter:authtoken]
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = swift
password = swift
delay_auth_decision = True
[filter:tempauth]
use = egg:swift#tempauth
user_admin_admin = admin .admin .reseller_admin
user_test_tester = testing .admin
user_test2_tester2 = testing2 .admin
user_test_tester3 = testing3
user_test5_tester5 = testing5 service
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:cache]
use = egg:swift#memcache
memcache_servers = controller:11211
[filter:ratelimit]
use = egg:swift#ratelimit
[filter:domain_remap]
use = egg:swift#domain_remap
[filter:catch_errors]
use = egg:swift#catch_errors
[filter:cname_lookup]
use = egg:swift#cname_lookup
[filter:staticweb]
use = egg:swift#staticweb
[filter:tempurl]
use = egg:swift#tempurl
[filter:formpost]
use = egg:swift#formpost
[filter:name_check]
use = egg:swift#name_check
[filter:list-endpoints]
use = egg:swift#list_endpoints
[filter:proxy-logging]
use = egg:swift#proxy_logging
[filter:bulk]
use = egg:swift#bulk
[filter:slo]
use = egg:swift#slo
[filter:dlo]
use = egg:swift#dlo
[filter:container-quotas]
use = egg:swift#container_quotas
[filter:account-quotas]
use = egg:swift#account_quotas
[filter:gatekeeper]
use = egg:swift#gatekeeper
[filter:container_sync]
use = egg:swift#container_sync
[filter:xprofile]
use = egg:swift#xprofile
[filter:versioned_writes]
use = egg:swift#versioned_writes
[filter:copy]
use = egg:swift#copy
[filter:keymaster]
use = egg:swift#keymaster
encryption_root_secret = changeme
[filter:kms_keymaster]
use = egg:swift#kms_keymaster
[filter:encryption]
use = egg:swift#encryption
[filter:listing_formats]
use = egg:swift#listing_formats
[filter:symlink]
use = egg:swift#symlink
  • 创建账户圈

  • 帐户服务器使用帐户环来维护容器列表

cd /etc/swift/

swift-ring-builder account.builder create 18 1 1
swift-ring-builder account.builder add --region 1 --zone 1 --ip $STORAGE_LOCAL_NET_IP --port 6202 --device $OBJECT_DISK --weight 100
swift-ring-builder account.builder
swift-ring-builder account.builder rebalance
  • 创建容器环

  • 容器服务器使用容器环来维护对象列表。但是,它不跟踪对象位置。

cd /etc/swift/

swift-ring-builder container.builder create 10 1 1
swift-ring-builder container.builder add --region 1 --zone 1 --ip $STORAGE_LOCAL_NET_IP --port 6201 --device $OBJECT_DISK --weight 100
swift-ring-builder container.builder
swift-ring-builder container.builder rebalance
  • 创建对象环

  • 对象服务器使用对象环来维护本地设备上的对象位置列表。

cd /etc/swift/

swift-ring-builder object.builder create 10 1 1
swift-ring-builder object.builder  add --region 1 --zone 1 --ip $STORAGE_LOCAL_NET_IP --port 6200 --device $OBJECT_DISK --weight 100 
swift-ring-builder object.builder
swift-ring-builder object.builder rebalance
  • 配置swift文件

vim /etc/swift/swift.conf
[swift-hash]
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme
[storage-policy:0]
name = Policy-0
default = yes
aliases = yellow, orange
[swift-constraints]
  • 修改属性并启动服务

chown -R root:swift /etc/swift
systemctl enable --now openstack-swift-proxy.service memcached.service

计算节点

  • 安装服务

yum install xfsprogs rsync openstack-swift-account openstack-swift-container openstack-swift-object -y
  • 格式化磁盘

mkfs.xfs -i size=1024 -f /dev/sdc
  • 配置开机挂载

mkdir -p /swift/node/sdc

echo "/dev/sdc /swift/node/sdc xfs loop,noatime 0 2" >> /etc/fstab

mount /dev/sdc /swift/node/sdc
  • 分发环配置文件

scp controller:/etc/swift/*.ring.gz /etc/swift/
  • 配置rsyonc启动文件

vim /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
address = 127.0.0.1
[account]
path            = /swift/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/account.lock
[container]
path            = /swift/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/container.lock
[object]
path            = /swift/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/object.lock
[swift_server]
path            = /etc/swift
read only       = true
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 5
lock file =     /var/lock/swift_server.lock
  • 启动rsync

systemctl enable --now rsyncd.service
  • 配置账户圈文件

vim /etc/swift/account-server.conf
[DEFAULT]
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /swift/node
mount_check = false
[pipeline:main]
pipeline = healthcheck recon account-server
[app:account-server]
use = egg:swift#account
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[account-replicator]
[account-auditor]
[account-reaper]
[filter:xprofile]
use = egg:swift#xprofile
  • 配置容器环文件

vim /etc/swift/container-server.conf
[DEFAULT]
bind_port = 6201
user = swift
swift_dir = /etc/swift
devices = /swift/node
mount_check = false
[pipeline:main]
pipeline = healthcheck recon container-server
[app:container-server]
use = egg:swift#container
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
[container-replicator]
[container-updater]
[container-auditor]
[container-sync]
[filter:xprofile]
use = egg:swift#xprofile
  • 配置对象环文件

vim /etc/swift/object-server.conf
[DEFAULT]
bind_port = 6200
user = swift
swift_dir = /etc/swift
devices = /swift/node
mount_check = false
[pipeline:main]
pipeline = healthcheck recon object-server
[app:object-server]
use = egg:swift#object
[filter:healthcheck]
use = egg:swift#healthcheck
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock
[object-replicator]
[object-reconstructor]
[object-updater]
[object-auditor]
[filter:xprofile]
use = egg:swift#xprofile
  • 配置swift文件

vim /etc/swift/swift.conf
[swift-hash]
swift_hash_path_suffix = changeme
swift_hash_path_prefix = changeme
[storage-policy:0]
name = Policy-0
default = yes
aliases = yellow, orange
[swift-constraints]
  • 修改属性并创建需要的目录

chown -R swift:swift /swift/node
mkdir -p /var/cache/swift
chown -R root:swift /var/cache/swift
chmod -R 775 /var/cache/swift
chown -R root:swift /etc/swift
  • 启动服务

systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service
systemctl restart openstack-swift-account.service openstack-swift-account-auditor.service openstack-swift-account-reaper.service openstack-swift-account-replicator.service
systemctl enable openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service
systemctl restart openstack-swift-container.service openstack-swift-container-auditor.service openstack-swift-container-replicator.service openstack-swift-container-updater.service
systemctl enable openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service
systemctl restart openstack-swift-object.service openstack-swift-object-auditor.service openstack-swift-object-replicator.service openstack-swift-object-updater.service

trove部署

  • 创建cinder卷类型

#create cinder_volume_type volumev2
cinder type-create volumev2
#create keypair trove-keypair
openstack keypair create trove-keypair
  • 配置变量

project_id_admin=`openstack project list|grep admin |awk '{print $2}'`
default_security_groups=`openstack security group list|grep $project_id_admin |awk '{print $2}'`
  • 创建数据库

mysql -uroot -e "CREATE DATABASE trove;"
mysql -uroot -e "GRANT ALL PRIVILEGES ON trove.* TO 'trove'@'%' IDENTIFIED BY 'trove123';"
  • 创建用户项目

openstack user create --domain default --password trove trove
openstack role add --project service --user trove admin
openstack service create --name trove --description "Database" database
openstack endpoint create --region RegionOne database public http://controller:8779/v1.0/%\(tenant_id\)s 
openstack endpoint create --region RegionOne database internal http://controller:8779/v1.0/%\(tenant_id\)s
openstack endpoint create --region RegionOne database admin http://controller:8779/v1.0/%\(tenant_id\)s
  • 安装服务

yum install openstack-trove openstack-trove-ui python-troveclient -y
  • 配置文件

vim /etc/trove/trove.conf
[DEFAULT]
log_dir = /var/log/trove
trove_auth_url = http://controller:5000/v3
nova_compute_url = http://controller:8774/v2.1
cinder_url = http://controller:8776/v2
swift_url = http://controller:8080/v2/AUTH_
cinder_service_type = volumev2
rpc_backend = rabbit
transport_url = rabbit://openstack:000000@controller
auth_strategy = keystone
api_paste_config = /etc/trove/api-paste.ini
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 000000
nova_proxy_admin_tenant_name = admin
taskmanager_manager = trove.taskmanager.manager.Manager
use_nova_server_config_drive = True
network_driver = trove.network.neutron.NeutronDriver
management_security_groups = a312c1fd-f3e9-4b37-8ddd-78c3625e712d
nova_keypair = trove-keypair
network_label_regex = \.\*
[database]
connection = mysql+pymysql://trove:trove123@controller/trove
idle_timeout = 3600
[profiler]
[ssl]
[oslo_messaging_notifications]
[mysql]
[redis]
[cassandra]
[couchbase]
[mongodb]
[vertica]
[cors]
[cors.subdomain]
[oslo_middleware]
[keystone_authtoken]
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = trove
password = trove
vim /etc/trove/trove-taskmanager.conf
[DEFAULT]
log_dir = /var/log/trove
log_file = trove-taskmanager.log
trove_auth_url = http://controller:5000/v3
nova_compute_url = http://controller:8774/v2.1
notifier_queue_hostname = controller
rpc_backend = rabbit
transport_url = rabbit://openstack:000000@controller
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 000000
nova_proxy_admin_tenant_name = admin
taskmanager_manager = trove.taskmanager.manager.Manager
notification_driver = messagingv2
network_driver = trove.network.neutron.NeutronDriver
management_security_groups = a312c1fd-f3e9-4b37-8ddd-78c3625e712d
nova_keypair = trove-keypair
network_label_regex = \.\*
guest_config = /etc/trove/trove-guestagent.conf
guest_info = guest_info.conf
injected_config_location = /etc/trove/conf.d
cloudinit_location = /etc/trove/cloudinit
[database]
connection = mysql+pymysql://trove:trove123@controller/trove
idle_timeout = 3600
[profiler]
[ssl]
[oslo_messaging_notifications]
[mysql]
[redis]
[cassandra]
[couchbase]
[mongodb]
[vertica]
[cors]
[cors.subdomain]
[oslo_middleware]
vim /etc/trove/trove-conductor.conf
[DEFAULT]
log_dir = /var/log/trove
log_file = trove-conductor.log
trove_auth_url = http://controller:5000/v3
notifier_queue_hostname = controller
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 000000
nova_proxy_admin_tenant_name = admin
rpc_backend = rabbit
transport_url = rabbit://openstack:000000@controller
[database]
connection = mysql+pymysql://trove:trove123@controller/trove
[profiler]
[ssl]
[oslo_messaging_notifications]
[mysql]
[redis]
[cassandra]
[couchbase]
[mongodb]
[vertica]
[cors]
[cors.subdomain]
[oslo_middleware]
vim /etc/trove/trove-guestagent.conf
[DEFAULT]
rpc_backend = rabbit
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 000000
nova_proxy_admin_user = admin
trove_auth_url = http://controller:5000/v3
swift_url = http://10.0.0.10:8080/v1/AUTH_
os_region_name = RegionOne
swift_service_type = object-store
log_file = trove-guestagent.log
transport_url = rabbit://openstack:000000@10.0.0.10
trove_auth_url = http://10.0.0.10:5000/v3
rabbit_host = 10.0.0.10
rabbit_userid = openstack
rabbit_port = 5672
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.10
rabbit_userid = openstack
rabbit_password = 000000
[profiler]
[ssl]
[oslo_messaging_notifications]
[mysql]
[redis]
[cassandra]
[couchbase]
[mongodb]
[vertica]
[cors]
[cors.subdomain]
[oslo_middleware]
  • 同步数据库

su -s /bin/sh -c "trove-manage db_sync" trove
  • 创建实例

glance image-create --name "mysql-5.6" --disk-format qcow2  --container-format bare --progress --file Mysql-5.6.qcow2
trove-manage datastore_update mysql ''
Glance_Image_ID=`glance image-list | awk '/ mysql-5.6 / { print $2 }'`
trove-manage datastore_version_update mysql mysql-5.6 mysql $Glance_Image_ID '' 1
openstack database instance create mysql-1 $flavor_id  --nic net-id=NETID  --size 1 --databases myDB --users user:password --datastore_version mysql-5.6 --datastore mysql 
posted @ 2022-09-30 15:14  A57  阅读(87)  评论(0)    收藏  举报