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
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/
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
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
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部署
#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