OpenStack-train版安装之安装Swift(对象存储服务)、安装Cinder(块存储服务)

安装Swift(对象存储服务)、安装Cinder(块存储服务)

  • 安装Swift(对象存储服务)
    • 控制节点安装和配置
    • 对象存储节点安装和配置
    • Create and distribute initial rings
    • 配置与启动
    • 验证
  • 安装Cinder(块存储服务)
    • 控制节点安装和配置
    • 块存储节点安装和配置
      • 使用LVM存储
      • 使用NFS存储
    • 块存储备份安装和配置
      • 使用Swift备份
      • 使用NFS备份
    • 验证

安装Swift(对象存储服务)

控制节点安装和配置

  1. 创建服务凭证
# openstack user create --domain default --password-prompt swift

输入密码:SWIFT_PASS
确认密码:SWIFT_PASS

# openstack role add --project service --user swift admin

# openstack service create --name swift   --description "OpenStack Object Storage" object-store
  1. 创建服务API接入点
# 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
  1. 安装和配置
# yum install openstack-swift-proxy python-swiftclient   python-keystoneclient python-keystonemiddleware   memcached -y

配置,下载最新配置模板:

# curl -o /etc/swift/proxy-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/proxy-server.conf-sample

修改配置文件 /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_id = default
user_domain_id = default
project_name = service
username = swift
password = SWIFT_PASS
delay_auth_decision = True
[filter:cache]
use = egg:swift#memcache
memcache_servers = controller:11211
4. 说明

  • 详细说明参考官网:
    https://docs.openstack.org/swift/train/install/controller-install-rdo.html

对象存储节点安装和配置

  1. 安装存储设备及同步服务
# yum install xfsprogs rsync -y

格式化(需要存在盘/dev/sdb、/dev/sdc):

# mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc

创建挂载目录:

# mkdir -p /srv/node/sdb
# mkdir -p /srv/node/sdc

创建LVM卷组:

# vgcreate cinder-volumes /dev/sdb

配置,修改配置文件 /etc/fstab,添加配置:
/dev/sdb /srv/node/sdb xfs noatime,nodiratime,logbufs=8 0 2
/dev/sdc /srv/node/sdc xfs noatime,nodiratime,logbufs=8 0 2
在这里插入图片描述

挂载设备:

# mount /srv/node/sdb
# mount /srv/node/sdc

配置,修改配置文件 /etc/rsyncd.conf,添加配置:
uid = swift
gid = swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 192.168.0.31

[account]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/account.lock

[container]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/container.lock

[object]
max connections = 2
path = /srv/node/
read only = False
lock file = /var/lock/object.lock

设置开机启动并启动服务:

# systemctl enable rsyncd.service
# systemctl start rsyncd.service
  1. 安装和配置
# yum install openstack-cinder targetcli python-keystone -y

配置,下载最新配置模板:

# curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/account-server.conf-sample
# curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/container-server.conf-sample
# curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/master/etc/object-server.conf-sample

修改配置文件 /etc/swift/account-server.conf,在对应分组【[组名]】下注释原有配置并添加配置:
[DEFAULT]
bind_ip = 192.168.0.31
bind_port = 6202
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main]
pipeline = healthcheck recon account-server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

修改配置文件 /etc/swift/container-server.conf,在对应分组【[组名]】下注释原有配置并添加配置:
[DEFAULT]
bind_ip = 192.168.0.31
bind_port = 6201
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main]
pipeline = healthcheck recon container-server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift

修改配置文件 /etc/swift/object-server.conf,在对应分组【[组名]】下注释原有配置并添加配置:
[DEFAULT]
bind_ip = 192.168.0.31
bind_port = 6200
user = swift
swift_dir = /etc/swift
devices = /srv/node
mount_check = True
[pipeline:main]
pipeline = healthcheck recon object-server
[filter:recon]
use = egg:swift#recon
recon_cache_path = /var/cache/swift
recon_lock_path = /var/lock

目录授权:

# chown -R swift:swift /srv/node

创建目录并授权:

# mkdir -p /var/cache/swift
# chown -R root:swift /var/cache/swift
# chmod -R 775 /var/cache/swift
  1. 说明
  • 详细说明参考官网:
    https://docs.openstack.org/swift/train/install/storage-install-rdo.html
  • 此手册将计算计算作为块存储节点,安装多个对象存储节点需要调整IP。

Create and distribute initial rings

在控制节点进行操作。

  1. Create account ring
    切换目录:
# cd /etc/swift/

Create the base account.builder file:

# swift-ring-builder account.builder create 10 3 1

Add each storage node to the ring:

# swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 192.168.0.31 --port 6202 --device sdb --weight 100
# swift-ring-builder account.builder add \
  --region 1 --zone 1 --ip 192.168.0.31 --port 6202 --device sdc --weight 100
# swift-ring-builder account.builder add \
  --region 1 --zone 2 --ip 192.168.0.32 --port 6202 --device sdb --weight 100
# swift-ring-builder account.builder add \
  --region 1 --zone 2 --ip 192.168.0.32 --port 6202 --device sdc --weight 100

Verify the ring contents:

# swift-ring-builder account.builder

在这里插入图片描述
Rebalance the ring:

# swift-ring-builder account.builder rebalance
  1. Create container ring
    切换目录:
# cd /etc/swift/

Create the base container.builder file:

# swift-ring-builder container.builder create 10 3 1

Add each storage node to the ring:

# swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 192.168.0.31 --port 6201 --device sdb --weight 100
# swift-ring-builder container.builder add \
  --region 1 --zone 1 --ip 192.168.0.31 --port 6201 --device sdc --weight 100
# swift-ring-builder container.builder add \
  --region 1 --zone 2 --ip 192.168.0.32 --port 6201 --device sdb --weight 100
# swift-ring-builder container.builder add \
  --region 1 --zone 2 --ip 192.168.0.32 --port 6201 --device sdc --weight 100

Verify the ring contents:

# swift-ring-builder container.builder

在这里插入图片描述

Rebalance the ring:

# swift-ring-builder container.builder rebalance
  1. Create object ring
    切换目录:
# cd /etc/swift/

Create the base object.builder file:

# swift-ring-builder object.builder create 10 3 1

Add each storage node to the ring:

# swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 192.168.0.31 --port 6200 --device sdb --weight 100
# swift-ring-builder object.builder add \
  --region 1 --zone 1 --ip 192.168.0.31 --port 6200 --device sdc --weight 100
# swift-ring-builder object.builder add \
  --region 1 --zone 2 --ip 192.168.0.32 --port 6200 --device sdb --weight 100
# swift-ring-builder object.builder add \
  --region 1 --zone 2 --ip 192.168.0.32 --port 6200 --device sdc --weight 100

Verify the ring contents:

# swift-ring-builder object.builder

在这里插入图片描述

Rebalance the ring:

# swift-ring-builder object.builder rebalance

4.Distribute ring configuration files
拷贝 /etc/swift目录中的文件account.ring.gz、container.ring.gz、object.ring.gz到存储节点的 /etc/swift目录下:

# scp /etc/swift/account.ring.gz root@192.168.0.31:/etc/swift
# scp /etc/swift/account.ring.gz root@192.168.0.32:/etc/swift
# scp /etc/swift/container.ring.gz root@192.168.0.31:/etc/swift
# scp /etc/swift/container.ring.gz root@192.168.0.32:/etc/swift
# scp /etc/swift/object.ring.gz root@192.168.0.31:/etc/swift
# scp /etc/swift/object.ring.gz root@192.168.0.32:/etc/swift

配置与启动

  1. 配置(控制节点)
    配置,下载最新配置模板:
# curl -o /etc/swift/swift.conf   https://opendev.org/openstack/swift/raw/branch/master/etc/swift.conf-sample

修改配置文件 /etc/swift/swift.conf,在对应分组【[组名]】下注释原有配置并添加配置:
[swift-hash]
swift_hash_path_suffix = HASH_PATH_SUFFIX
swift_hash_path_prefix = HASH_PATH_PREFIX
[storage-policy:0]
name = Policy-0
default = yes

拷贝 /etc/swift/swift.conf到存储节点的 /etc/swift目录下:

# scp /etc/swift/swift.conf root@192.168.0.31:/etc/swift
# scp /etc/swift/swift.conf root@192.168.0.32:/etc/swift
  1. 配置文件夹授权(控制节点+存储节点)
# chown -R root:swift /etc/swift
  1. 开机启动并启动服务(控制节点)
# systemctl enable openstack-swift-proxy.service memcached.service
# systemctl start openstack-swift-proxy.service memcached.service
  1. 开机启动并启动服务(存储节点)
# systemctl enable openstack-swift-account.service openstack-swift-account-auditor.service   openstack-swift-account-reaper.service openstack-swift-account-replicator.service
# systemctl start 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 start 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 start openstack-swift-object.service openstack-swift-object-auditor.service   openstack-swift-object-replicator.service openstack-swift-object-updater.service

验证

  1. 文件夹授权(存储节点)
# chcon -R system_u:object_r:swift_data_t:s0 /srv/node

1.5.5.2检查服务状态

# swift stat

在这里插入图片描述

创建容器(容器名:container1):

# openstack container create container1

在这里插入图片描述

上传文件到容器(测试文件:account.ring.gz):

# openstack object create container1 account.ring.gz

在这里插入图片描述

说明:
创建容器或上传文件报错,查看日志用:

# journalctl -f

暂时发现上传文件报编码错误:
在这里插入图片描述
解决方式:
将提示编码错误py文件 /usr/lib64/python2.7/logging/init.py前面加上编码设置:

在这里插入图片描述

安装Cinder(块存储服务)

控制节点安装和配置

  1. 数据库创建、创建用户并授权
# mysql
MariaDB [(none)]> CREATE DATABASE cinder;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
                IDENTIFIED BY 'CINDER_DBPASS';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
                IDENTIFIED BY 'CINDER_DBPASS';
  1. 创建服务凭证
# openstack user create --domain default --password-prompt cinder

输入密码:CINDER_PASS
确认密码:CINDER_PASS

# openstack role add --project service --user cinder admin

# openstack service create --name cinderv2   --description "OpenStack Block Storage" volumev2
# openstack service create --name cinderv3   --description "OpenStack Block Storage" volumev3
  1. 创建服务API接入点
# openstack endpoint create --region RegionOne   volumev2 public http://controller:8776/v2/%\(project_id\)s
# openstack endpoint create --region RegionOne   volumev2 internal http://controller:8776/v2/%\(project_id\)s
# openstack endpoint create --region RegionOne   volumev2 admin http://controller:8776/v2/%\(project_id\)s
# openstack endpoint create --region RegionOne   volumev3 public http://controller:8776/v3/%\(project_id\)s
# openstack endpoint create --region RegionOne   volumev3 internal http://controller:8776/v3/%\(project_id\)s
# openstack endpoint create --region RegionOne   volumev3 admin http://controller:8776/v3/%\(project_id\)s
  1. 安装和配置
# yum install openstack-cinder -y

配置,修改配置文件 /etc/cinder/cinder.conf,在对应分组【[组名]】下添加配置:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 192.168.0.11
[keystone_authtoken]
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 = cinder
password = CINDER_PASS
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

初始化数据库:

# su -s /bin/sh -c "cinder-manage db sync" cinder

配置,修改配置文件 /etc/nova/nova.conf,在对应分组【[组名]】下添加配置:
[cinder]
os_region_name = RegionOne

设置开机启动并启动服务:

# systemctl restart openstack-nova-api.service
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
  1. 说明
  • 详细说明参考官网:
    https://docs.openstack.org/cinder/train/install/cinder-controller-install-rdo.html
  • 安装mysql时做了安装初始化,将密码设置为无,如有设置密码,连接时请加账号密码。

块存储节点安装和配置

使用LVM存储

  1. 安装存储设备
# yum install lvm2 device-mapper-persistent-data -y

设置开机启动并启动服务:

# systemctl enable lvm2-lvmetad.service
# systemctl restart lvm2-lvmetad.service

创建LVM物理卷(需要存在盘/dev/sdb):

# pvcreate /dev/sdb

创建LVM卷组:

# vgcreate cinder-volumes /dev/sdb

#vgs

配置,修改配置文件 /etc/lvm/lvm.conf,在devices中的添加:
filter = [ “a/sdb/”, “r/.*/”] //不一定要添加
在这里插入图片描述

  1. 安装和配置
# yum install openstack-cinder targetcli python-keystone -y

配置,修改配置文件 /etc/cinder/cinder.conf,在对应分组【[组名]】下添加配置:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 192.168.0.11
enabled_backends = lvm
glance_api_servers = http://controller:9292
[keystone_authtoken]
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 = cinder
password = CINDER_PASS
[lvm]
volume_backend_name = lvm
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

设置开机启动并启动服务:

# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service

验证点

# openstack volume service list

在这里插入图片描述
确保state都为up。
3. 说明

  • 详细说明参考官网:
    https://docs.openstack.org/cinder/train/install/cinder-storage-install-rdo.html
  • 此手册将控制节点(controller)作为块存储节点,配置与【控制节点安装和配置】中有交集则将多的添加进去。

使用NFS存储

  1. 安装NFS
# yum install nfs-utils -y

创建存储目录:

# mkdir -p /home/nfs/data

配置,修改配置文件 /etc/exports,添加一行配置:
/home/nfs/data 192.168.0.0/24(rw,async,no_root_squash,no_all_squash)
在这里插入图片描述
设置开机启动并启动服务:

# systemctl enable rpcbind
# systemctl restart rpcbind
# systemctl enable nfs
# systemctl restart nfs

校验:

# showmount -e 192.168.0.11
  1. 安装和配置
# yum install openstack-cinder targetcli python-keystone -y

配置,添加nfs配置:

# cat >> /etc/cinder/nfs_shares << EOF
192.168.0.11:/home/nfs/data
EOF

# chown root:cinder /etc/cinder/nfs_shares
# chmod 0640 /etc/cinder/nfs_shares	

配置,修改配置文件 /etc/cinder/cinder.conf,在对应分组【[组名]】下添加配置:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 192.168.0.11
enabled_backends = nfs
glance_api_servers = http://controller:9292
[keystone_authtoken]
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 = cinder
password = CINDER_PASS
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares
volume_backend_name = nfs
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

设置开机启动并启动服务:

# systemctl enable openstack-cinder-volume.service target.service
# systemctl restart openstack-cinder-volume.service target.service

验证块存储支持nfs

# openstack volume service list

在这里插入图片描述

  1. 说明
  • 此手册将控制节点(controller)作为块存储节点,配置与【控制节点安装和配置】中有交集则将多的添加进去。
  • 参照https://docs.openstack.org/cinder/train/admin/blockstorage-nfs-backend.html

块存储备份安装和配置

使用Swift备份

  1. 安装Swift(上面已安装)
  2. 块存储节点安装和配置
# yum install openstack-cinder -y

配置,修改配置文件 /etc/cinder/cinder.conf,在对应分组【[组名]】下添加配置:
[DEFAULT]
backup_driver = cinder.backup.drivers.swift.SwiftBackupDriver
backup_swift_url = http://controller:8080/v1/AUTH_

设置开机启动并启动服务:

# systemctl enable openstack-cinder-backup.service
# systemctl restart openstack-cinder-backup.service
  1. 控制节点安装和配置(Horizon安装主机)
    配置,修改配置文件 /etc/openstack-dashboard/local_settings,添加配置:
    OPENSTACK_CINDER_FEATURES = {
    ‘enable_backup’: True,
    }

设置开机启动并启动服务:

# systemctl restart httpd.service memcached.service

使用NFS备份

  1. 备份节点安装和配置(上面已安装)
  2. 块存储节点安装和配置
# yum install openstack-cinder -y

配置,修改配置文件 /etc/cinder/cinder.conf,在对应分组【[组名]】下添加配置:
[DEFAULT]
backup_driver = cinder.backup.drivers.nfs.NFSBackupDriver
backup_share = 172.16.1.11:/home/nfs/data

设置开机启动并启动服务:

# systemctl enable openstack-cinder-backup.service
# systemctl restart openstack-cinder-backup.service
  1. 控制节点安装和配置(Horizon安装主机)
    配置,修改配置文件 /etc/openstack-dashboard/local_settings,添加配置:
    OPENSTACK_CINDER_FEATURES = {
    ‘enable_backup’: True,
    }

设置开机启动并启动服务:

# systemctl restart httpd.service memcached.service
  1. 说明
  • 此手册将控制节点(controller)作为备份节点,配置与【控制节点安装和配置】中有交集则将多的添加进去。

验证

使用lvm作为存储卷状态是否正常:

# openstack volume service list

在这里插入图片描述

使用nfs作为存储卷状态是否正常:

# openstack volume service list

在这里插入图片描述

说明:
可以采用多种类型的存储卷,例如需要同时使用lvm与nfs,配置(/etc/cinder/cinder.conf)如下:
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249941.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云仓酒庄的品牌雷盛红酒分享红酒里加二氧化硫有害吗?

雷盛葡萄酒是广州万豪酒业有限公司旗下主力葡萄酒品牌&#xff0c;该品牌由云仓酒庄负责全国运营。雷盛&#xff08;LEESON&#xff09;品牌系列葡萄酒有幸邀请著名导演张纪中先生担任品牌代言人。采用多国家采购、多葡萄酒品种、多价位区间的全系列整体品牌形式&#xff0c;让…

Nginx配合Vue的history模式

加上一行代码就行&#xff1a; try_files $uri $uri/ /index.html;

Java医院3D人体智能导诊系统源码 Uniapp+springboot 微信小程序

“智能导诊”以人工智能手段为依托&#xff0c;为人们提供智能分诊、问病信息等服务&#xff0c;在一定程度上满足了人们自我健康管理、精准挂号等需求。智能导诊可根据描述的部位和病症&#xff0c;给出适合病症的科室参考。 智能导诊页面会显示男性或女性的身体结构图&#x…

深度学习 Day14——P3天气识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文章目录 前言1 我的环境2 代码实现与执行结果2.1 前期准备2.1.1 引入库2.1.2 设置GPU&#xff08;如果设备上支持GPU就使用GPU,否则使用C…

Gerrit 提交报错missing Change-Id in message footer

直接执行提示的命令&#xff1a; gitdir$(git rev-parse --git-dir); scp -p -P 29418 liyjgerrit.ingageapp.com:hooks/commit-msg ${gitdir}/hooks/ 如果报错&#xff1a; subsystem request failed on channel 0 在.git/hooks目录下看有没有生成commit-msg文件&#xff…

(四)STM32 操作 GPIO 点亮 LED灯 / GPIO工作模式

目录 1. STM32 工程模板中的工程目录介绍 2. GPIO 简介 3. GPIO 框图剖析 1&#xff09;保护二极管及上、下拉电阻 2&#xff09; P-MOS 管和 N-MOS 管 3&#xff09;输出数据寄存器 3.1&#xff09;ODR 端口输出数据寄存器 3.2&#xff09;BSRR 端口位设置/清除寄存器 4&a…

一点技术细节

匈牙利算法&#xff1a; 14-4: 匈牙利算法 Hungarian Algorithm_哔哩哔哩_bilibili 课件&#xff1a;https://github.com/wangshusen/AdvancedAlgorithms.git SWin transformer&#xff1a; Swin Transformer论文精读【论文精读】_哔哩哔哩_bilibili patch:灰色 窗口&…

八、Seata的XA模式

目录 八、Seata的XA模式8.3 XA模式多数据源场景1 环境搭建2、使⽤XA模式解决事务 八、Seata的XA模式 8.3 XA模式多数据源场景 1 环境搭建 建库建表 代码的db.sql中 创建工程 添加依赖 <dependency><groupId>org.springframework.boot</groupId><ar…

ssl证书问题导致本地启动前端服务报500

报错如下&#xff1a;注意查看报错信息 问题&#xff1a;系统原是http&#xff0c;后台调整为https后&#xff0c;ssl证书有点问题&#xff0c; vue项目本地服务&#xff0c;使用代理&#xff0c;webpack默认&#xff0c;证书强校验&#xff0c;导致请求无法发出&#xff0c;后…

COSCon 的台前幕后:KCC@上海 12.2 活动总结

沐浴着冬日暖阳&#xff0c;KCC上海的第三次活动如期而至。第八届中国开源年会&#xff08;COSCon23&#xff09;的顺利举办离不开许多优秀志愿者们的辛勤付出&#xff0c;本次活动作为 COSCon23 的 After Party&#xff0c;我们有幸邀请到了其中的部分台前幕后人员&#xff0c…

c语言单向链表

看如下代码&#xff0c;这是一个完整的可运行的c源文件&#xff0c;要注意的点&#xff1a; c语言程序运行不一定需要头文件NULL其实是 (void*)0&#xff0c;把指针赋值成(void*)0,就是防止程序员不想该指针被引用的时候被引用&#xff0c;引用地址为0的值程序会引起系统中断&…

【Vitamin ; amino acid 】

【NAD NADPH&#xff1b; FMN FAD &#xff1b; NMN -化学】

数字化转型对企业有什么好处?

引言 数字化转型已经成为当今商业领域中的一股强大力量&#xff0c;它不仅仅是简单的技术更新&#xff0c;更是企业发展的重要战略转变。随着科技的迅猛发展和全球化竞争的加剧&#xff0c;企业们正在积极探索如何将数字化的力量融入到他们的运营和战略中。 数字化转型不仅是传…

基于ssm游戏美术外包管理信息系统源码和论文

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;线下管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

spring面试:二、bean的生命周期和循环引入问题(三级缓存、@Lazy)

bean的生命周期 Spring容器在进行实例化时&#xff0c;会将xml配置的的信息封装成一个BeanDefinition对象&#xff0c;Spring根据BeanDefinition来创建Bean对象&#xff0c;里面有很多的属性用来描述Bean。 其中比较重要的是&#xff1a; beanClassName&#xff1a;bean 的类…

救命~这件国风旗袍女儿穿也太好看了吧

这款中式提花改良版旗袍 一眼就戳中了我的心巴 整件精美刺绣好看不大众 两侧网纱的加持增添仙气缥缈感 穿上厚实不显臃肿 袖口处拼接毛毛徒增可爱俏皮的感觉 穿上过年过节满满的焦点呀~

Logstash访问安全访问Elasticsearch集群

生成logstash证书: opensal pkcs12 -in elastic-stack-ca.p12 -clcerts -nokeys > logafash.cer openssl x509 -in logstash.cer -out logstash.pem 编排配置文件

Elasticsearch:使用 OpenAI 生成嵌入并进行向量搜索 - nodejs

在我之前的文章&#xff1a; Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;一&#xff09;&#xff08;二&#xff09;&#xff08;三&#xff09;&#xff08;四&#xff09;​​​​​ 我详细地描述了如何使用…

【C++11特性篇】盘点C++11中三种简化声明的方式【auto】【decltype】【nullptr】(3)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.auto&#xff06;范围for二.decltyp…

LVS负载均衡群集 DR模式

目录 1.LVS LVS调度器用的调度方法 固定调度算法 动态调度算法 LVS的工作模式及其工作过程 1、NAT模式&#xff08;VS-NAT&#xff09; 2、直接路由模式&#xff08;VS-DR&#xff09; 3、IP隧道模式&#xff08;VS-TUN&#xff09; 2.DR模式LVS负载均衡群集 LVS-DR模…