ddsadasdasd

news/2024/9/25 13:32:28/文章来源:https://www.cnblogs.com/gord/p/18431162

目录

 

理论部分 

Ceph的诞生主要是为了解决以下问题:

操作部分

第一部分(虚拟机配置)

一、修改主机名

二、修改防火墙、SELinux状态

三、修改hosts文件

四、验证网络环境(请参阅 第一步、第四步)

五、配置 ceph 源

六、开始执行yum安装

七、创建目录

第二部分(部署ceph)

1.1初始化ceph集群

1.2修改ceph.conf配置文件为单节点

 2.1初始化 Ceph 监视器(MON)节点

2.2 Ceph 配置文件和密钥分发到指定的管理节点

2.3在指定的节点上创建一个 Ceph 管理器(MGR)守护进程。

3.1磁盘部署

3.2 创建OSD

4.1启动rgw

 4.2测试rgw是否正常启动

 4.3设置pool 和 pgs的值

 4.4利用s3创建 桶来测试

 4.5查看用户信息

 5.5创建一个名为 rbd-demo 的专门用于 RBD 的存储池

5.6将存储池转换为 RBD 模式

5.7初始化存储池

5.8创建镜像

 5.9镜像管理

 6.1创建ceph文件系统(ceph fs)池

 6.2创建文件系统

 7.1创建dashboard

7.2禁用ssl加密

7.3配置IP和端口

第三部分(S3cmd的部署配置)

 1.S3cmd安装

 2.创建s3cmd使用的用户生成key

3.1 配置s3使其可以连接到ceph集群

3.2 修改刚生成的/root/.s3cfg中的三处配置

3.3 创建名为test-bucket的bucket

3.6 查看bucket桶列表


 

理论部分 

Ceph的诞生主要是为了解决以下问题:

  1. 统一存储的I/O问题:

    Ceph提供对象、块和文件存储,是一个统一存储解决方案,旨在解决不同类型数据存储的I/O问题。

    通过整合多种存储接口,Ceph能够满足不同应用对数据存储的需求。

  2. 高性能分布式文件系统的需求:

    Ceph最初是作为一个PhD研究项目开始的,目标是开发下一代高性能分布式文件系统。

    随着云计算的发展,Ceph成为了一个受关注的开源项目,并乘上了OpenStack的春风,得到了广泛的应用和推广。

  3. 数据容错和无缝复制:

    Ceph被设计成一个没有单点故障的完全分布式存储系统。

    通过数据复制和容错机制,确保数据的可靠性和稳定性。这种设计使得Ceph能够在硬件故障时自动进行数据修复和管理,提高了存储系统的可用性。

  4. 可扩展性和灵活性:

    Ceph支持PB级别的数据扩展,并且可以部署到上千台通用服务器上。

    这种可扩展性使得Ceph能够满足不断增长的数据存储需求。同时,Ceph的去中心化设计也提供了更大的灵活性,使得集群的扩展更加容易和高效。

Ceph的诞生主要是为了解决统一存储的I/O问题、高性能分布式文件系统的需求、数据容错和无缝复制以及可扩展性和灵活性等问题。

操作部分

第一部分(虚拟机配置)

一、修改主机名
  1.  
    [root@localhost ~]# hostnamectl set-hostname user33
  2.  
    [root@localhost ~]# hostname
  3.  
     
  4.  
    [root@localhost ~]# bash
二、修改防火墙、SELinux状态
  1.  
    [root@user33 ~]# setenforce 0
  2.  
    [root@user33 ~]# sed -i "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
  3.  
     
  4.  
    [root@user33 ~]# systemctl disable firewalld.service
  5.  
    [root@user33 ~]# systemctl stop firewalld.service
三、修改hosts文件
[root@user33 ~]# echo "10.18.33.143 user33" | tee -a /etc/hosts
四、验证网络环境(请参阅 第一步、第四步)

https://blog.csdn.net/weixin_73460492/article/details/137519244?spm=1001.2014.3001.5501icon-default.png?t=N7T8http://DHCP集群-(双机热备、DHCP主从服务器)

五、配置 ceph 源
  1.  
    [root@user33 ~]# ls /etc/yum.repos.d/
  2.  
    [root@user33 ~]# mkdir /etc/yum.repos.d/bak
  3.  
    [root@user33 ~]# mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
  4.  
     
  5.  
    [root@user33 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  6.  
    [root@user33 ~]# curl -o /etc/yum.repos.d/epel-7.repo https://mirrors.aliyun.com/repo/epel-7.repo
  7.  
    [root@user33 ceph]# cat -n /etc/yum.repos.d/ceph.repo
  8.  
    1 [Ceph]
  9.  
    2 name=Ceph packages for $basearch
  10.  
    3 baseurl=http://download.ceph.com/rpm-mimic/el7/$basearch
  11.  
    4 enabled=1
  12.  
    5 gpgcheck=1
  13.  
    6 type=rpm-md
  14.  
    7 gpgkey=https://download.ceph.com/keys/release.asc
  15.  
    8 priority=1
  16.  
    9
  17.  
    10 [Ceph-noarch]
  18.  
    11 name=Ceph noarch packages
  19.  
    12 baseurl=http://download.ceph.com/rpm-mimic/el7/noarch
  20.  
    13 enabled=1
  21.  
    14 gpgcheck=1
  22.  
    15 type=rpm-md
  23.  
    16 gpgkey=https://download.ceph.com/keys/release.asc
  24.  
    17 priority=1
  25.  
    18
  26.  
    19 [ceph-source]
  27.  
    20 name=Ceph source packages
  28.  
    21 baseurl=http://download.ceph.com/rpm-mimic/el7/SRPMS
  29.  
    22 enabled=1
  30.  
    23 gpgcheck=1
  31.  
    24 type=rpm-md
  32.  
    25 gpgkey=https://download.ceph.com/keys/release.asc
  33.  
    26 priority=1
六、开始执行yum安装
  1.  
    [root@user33 ~]# yum clean all && yum makecache && yum repolist
  2.  
    源标识 源名称 状态
  3.  
    Ceph/x86_64 Ceph packages for x86_64 524
  4.  
    Ceph-noarch Ceph noarch packages 16
  5.  
    base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
  6.  
    ceph-source Ceph source packages 0
  7.  
    epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,798
  8.  
    extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
  9.  
    updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 5,802
  10.  
    repolist: 30,738
  11.  
     
  12.  
    [root@user33 ceph]# yum -y install ceph-deploy ceph ceph-radosgw python-setuptools python2-subprocess32 pyhton-pip epel-release
七、创建目录
  1.  
    [root@user33 ~]# mkdir ./ceph
  2.  
    [root@user33 ~]# cd ceph/

第二部分(部署ceph)

1.1初始化ceph集群
[root@user33 ceph]# ceph-deploy new user33
1.2修改ceph.conf配置文件为单节点
  1.  
    [root@user33 ceph]# echo "osd pool default min_size = 1" | tee -a ceph.conf
  2.  
    [root@user33 ceph]# echo "osd pool default size = 1" | tee -a ceph.conf
  3.  
    [root@user33 ceph]# echo "public_network = 10.18.33.0/24" | tee -a ceph.conf
  • osd pool default min_size = 1这行配置追加到ceph.conf文件的末尾。这设置了OSD(对象存储设备)池的默认最小大小为1。这意味着,为了保持数据完整性,Ceph将尝试确保至少有一个OSD是可用的。

  • osd pool default size = 1这行配置追加到ceph.conf。这设置了OSD池的默认大小为1。这通常与复制策略和其他相关的设置一起工作,以确定数据应如何在OSD之间进行复制。

  • public_network = 10.18.33.0/24这行配置追加到ceph.conf。这指定了Ceph集群用于公共通信(例如,客户端与集群之间的通信)的网络。

 2.1初始化 Ceph 监视器(MON)节点
[root@user33 ceph]# ceph-deploy mon create-initial
2.2 Ceph 配置文件和密钥分发到指定的管理节点
[root@user33 ceph]# ceph-deploy admin user33
2.3在指定的节点上创建一个 Ceph 管理器(MGR)守护进程。
[root@user33 ceph]# ceph-deploy mgr create user33
3.1磁盘部署

部署数据盘可参阅文献(请参阅 第三步):

https://blog.csdn.net/weixin_73460492/article/details/137612920?spm=1001.2014.3001.5501icon-default.png?t=N7T8http://linux部署RAID10磁盘阵列

3.2 创建OSD
[root@user33 ~]# ceph-deploy osd create user33 --data /dev/sdb1
4.1启动rgw
[root@user33 ceph]# ceph-deploy rgw create user33
 4.2测试rgw是否正常启动
  1.  
    [root@user33 ceph]# ss -nltp | grep 7480
  2.  
    LISTEN 0 128 *:7480 *:* users:(("radosgw",pid=12013,fd=38))
  3.  
     
  4.  
    [root@user33 ceph]# curl 10.18.33.143:7480
  5.  
    <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
参数讲解
-n 用于不解析服务名称
-t 表示TCP套接字
-l 用于仅显示正在监听的套接字
-p 用于显示与每个套接字关联的进程信息
 4.3设置pool 和 pgs的值
  1.  
    [root@user33 ceph]# ceph osd pool set .rgw.root pg_num 40
  2.  
    set pool 1 pg_num to 40
  3.  
    [root@user33 ceph]# ceph osd pool set .rgw.root pgp_num 40
  4.  
    set pool 1 pgp_num to 40
  • .rgw.root 通常是Ceph对象存储网关(RADOS Gateway, RGW)使用的内部存储池。

  • pg_num: 设置存储池的Placement Group(PG)数量。

    Placement Groups是Ceph用于在OSDs(Object Storage Daemons)之间分散存储对象的逻辑容器。

    合理设置PG数量对于性能和数据分布非常重要。

    太少的PGs可能导致OSD之间负载不均衡,而太多的PGs则可能导致额外的管理开销。

  • pgp_num: 设置用于Placement Group的放置目的的PGP(Placement Group for Placement)数量。

    在大多数情况下,pg_num 和 pgp_num 应该设置为相同的值。

    PGP是用于计算数据应该放置到哪个OSD上的逻辑结构,通常与PGs一一对应。

 4.4利用s3创建 桶来测试
[root@user33 ceph]# radosgw-admin user create --uid="admin" --display-name="admin"
 4.5查看用户信息
  1.  
    # 记录access_key和secret_access_key的值
  2.  
    [root@user33 ceph]# radosgw-admin user info --uid="admin"
 5.5创建一个名为 rbd-demo 的专门用于 RBD 的存储池
  1.  
    [root@admin03 ceph]# ceph osd pool create rbd-demo 64 64
  2.  
    pool 'rbd-demo' created
5.6将存储池转换为 RBD 模式
  1.  
    [root@admin03 ceph]# ceph osd pool application enable rbd-demo rbd
  2.  
    enabled application 'rbd' on pool 'rbd-demo'
5.7初始化存储池
  1.  
    # -p 等同于 --pool
  2.  
    [root@admin03 ceph]# rbd pool init -p rbd-demo
5.8创建镜像
  1.  
    [root@admin03 ~]# ls
  2.  
    anaconda-ks.cfg ceph ceph-deploy-ceph.log cirros-0.3.4-x86_64-disk.img
  3.  
     
  4.  
    [root@admin03 ~]# rbd create -p rbd-demo --image cirros-0.3.4-x86_64-disk.img --size 1G
 5.9镜像管理
  1.  
    # 列出Ceph集群中所有的存储池(pools)
  2.  
    [root@admin03 ~]# ceph osd lspools
  3.  
    1 .rgw.root
  4.  
    2 default.rgw.control
  5.  
    3 default.rgw.meta
  6.  
    4 default.rgw.log
  7.  
    5 default.rgw.buckets.index
  8.  
    6 rbd-demo
  9.  
     
  10.  
    # 列出指定存储池(在这里是rbd-demo)中的所有RBD镜像
  11.  
    [root@admin03 ~]# rbd ls -l -p rbd-demo
  12.  
    NAME SIZE PARENT FMT PROT LOCK
  13.  
    cirros-0.3.4-x86_64-disk.img 1 GiB 2
  14.  
     
  15.  
    #列出指定存储池(在这里是rbd-demo)中的所有RBD镜像
  16.  
    [root@admin03 ~]# rbd info -p rbd-demo --image cirros-0.3.4-x86_64-disk.img
  17.  
    rbd image 'cirros-0.3.4-x86_64-disk.img':
  18.  
    size 1 GiB in 256 objects
  19.  
    order 22 (4 MiB objects)
  20.  
    id: d3816b8b4567
  21.  
    block_name_prefix: rbd_data.d3816b8b4567
  22.  
    format: 2
  23.  
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
  24.  
    op_features:
  25.  
    flags:
  26.  
    create_timestamp: Thu May 9 10:48:55 2024
 6.1创建ceph文件系统(ceph fs)池
  1.  
    # 创建了一个名为cephfs_data的存储池,并设置了其PG(Placement Group)的数量为64
  2.  
    [root@admin03 ~]# ceph osd pool create cephfs_data 64
  3.  
    pool 'cephfs_data' created
  4.  
     
  5.  
    # 创建了一个名为cephfs_metadata的存储池,并设置了其PG的数量为32
  6.  
    [root@admin03 ~]# ceph osd pool create cephfs_metadata 32
  7.  
    pool 'cephfs_metadata' created
 6.2创建文件系统
  1.  
    [root@admin03 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
  2.  
    new fs with metadata pool 8 and data pool 7
  3.  
     
  4.  
    # 查看文件系统
  5.  
    [root@admin03 ~]# ceph fs ls
  6.  
    name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  7.  
     
  8.  
    # 查看文件系统状态
  9.  
    [root@admin03 ~]# ceph fs status cephfs
  10.  
    cephfs - 0 clients
  11.  
    ======
  12.  
    +------+-------+-----+----------+-----+------+
  13.  
    | Rank | State | MDS | Activity | dns | inos |
  14.  
    +------+-------+-----+----------+-----+------+
  15.  
    +------+-------+-----+----------+-----+------+
  16.  
    +-----------------+----------+-------+-------+
  17.  
    | Pool | type | used | avail |
  18.  
    +-----------------+----------+-------+-------+
  19.  
    | cephfs_metadata | metadata | 0 | 46.4G |
  20.  
    | cephfs_data | data | 0 | 46.4G |
  21.  
    +-----------------+----------+-------+-------+
  22.  
    +-------------+
  23.  
    | Standby MDS |
  24.  
    +-------------+
  25.  
    +-------------+
  26.  
    +---------+---------+
  27.  
    | version | daemons |
  28.  
    +---------+---------+
  29.  
    +---------+---------+
 7.1创建dashboard
[root@user33 ~]# ceph mgr module enable dashboard
7.2禁用ssl加密
[root@user33 ~]# ceph config set mgr mgr/dashboard/ssl false
7.3配置IP和端口
  1.  
    # 配置IP和端口
  2.  
    [root@user33 ~]# name="user33"
  3.  
    [root@user33 ~]# ip=10.18.33.143
  4.  
    [root@user33 ~]# POART=8443
  5.  
     
  6.  
    [root@user33 ~]# ceph config set mgr "mgr/dashboard/$name/server_addr" "$IP"
  7.  
    [root@user33 ~]# ceph config set mgr "mgr/dashboard/$name/server_port" "$PORT"
  8.  
    [root@user33 ~]# ceph config set mgr "mgr/dashboard/$name/ssl_server_port" "$PORT"
  9.  
     
  10.  
    [root@user33 ~]# ceph config set mgr mgr/dashboard/user33/server_addr 10.18.33.143
  11.  
    [root@user33 ~]# ceph config set mgr mgr/dashboard/user33/server_port 8443
  12.  
     
  13.  
    # 设置账户密码
  14.  
    [root@user33 ~]# ceph dashboard set-login-credentials admin admin
  15.  
     
  16.  
    # 更改ceph配置文件
  17.  
    [root@user33 ~]# echo "mgr_modules = dashboard" >> ./ceph/ceph.config
  18.  
    [root@user33 ~]# echo "mgr/dashboard/user33/server_addr = 10.18.33.143" >> ./ceph/ceph.config
  19.  
    [root@user33 ~]# echo "mgr/dashboard/user33/server_port = 8443" >> ./ceph/ceph.config
  20.  
     
  21.  
    [root@user33 ceph]# systemctl restart ceph-mgr@user33.service
  22.  
     
  23.  
    # 创建dashboard使用的用户
  24.  
    [root@admin03 ceph]# radosgw-admin user create --uid=admin --display-name=admin --system
  25.  
     
  26.  
    #将两个key保存到单独一个文件中,以便下一步使用
  27.  
    [root@admin03 ceph]# echo "9AJ3IIIR4RA4TKOYFZGI" | tee -a access_key
  28.  
    9AJ3IIIR4RA4TKOYFZGI
  29.  
    [root@admin03 ceph]# echo "ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy" | tee -a secret_key
  30.  
    ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy
  31.  
     
  32.  
     
  33.  
    # 向仪表板提供凭据
  34.  
    # 配置Ceph集群的仪表盘(Dashboard)与Rados Gateway(RGW)之间的身份验证信息
  35.  
    [root@admin03 ceph]# ceph dashboard set-rgw-api-access-key access_key
  36.  
    Option RGW_API_ACCESS_KEY updated
  37.  
    [root@admin03 ceph]# ceph dashboard set-rgw-api-secret-key secret_key
  38.  
    Option RGW_API_SECRET_KEY updated
  39.  
     
  40.  
    # Shell命令替换功能来从文件中读取密钥,并将其设置为RGW API的访问密钥
  41.  
    [root@admin03 ceph]# ls
  42.  
    access_key ceph.bootstrap-osd.keyring ceph.conf ceph.mon.keyring
  43.  
    ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph-deploy-ceph.log secret_key
  44.  
    ceph.bootstrap-mgr.keyring ceph.client.admin.keyring ceph.log
  45.  
    [root@admin03 ceph]# ceph dashboard set-rgw-api-access-key $(cat access_key)
  46.  
    Option RGW_API_ACCESS_KEY updated
  47.  
    [root@admin03 ceph]# ceph dashboard set-rgw-api-secret-key $(cat secret_key)
  48.  
    Option RGW_API_SECRET_KEY updated
  49.  
     
  50.  
     
  51.  
     
  52.  
    [root@admin03 ceph]# mkdir /mnt/cephfs
  53.  
    [root@admin03 ceph]# echo "Hello, CephFS\!" > /mnt/cephfs/testfile.txt
  54.  
    [root@admin03 ceph]# sudo mount -t ceph 10.18.33.143:8443:/ /mnt/cephfs -o name=client.admin,secret=
  55.  
    ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy
  56.  
    adding ceph secret key to kernel failed: Invalid argument.
  57.  
    failed to parse ceph_options
  58.  
     
  59.  
    # 重启dashboard
  60.  
    [root@user33 ~]# ceph mgr module disable dashboard
  61.  
    [root@user33 ~]# ceph mgr module enable dashboard

第三部分(S3cmd的部署配置)

 1.S3cmd安装
[root@user33 ~]# yum install -y s3cmd
 2.创建s3cmd使用的用户生成key
[root@user33 ~]# radosgw-admin user create --uid=admin --display-name=admin
3.1 配置s3使其可以连接到ceph集群
  1.  
    [root@user33 ~]# s3cmd --configure
  2.  
     
  3.  
    Enter new values or accept defaults in brackets with Enter.
  4.  
    Refer to user manual for detailed description of all options.
  5.  
     
  6.  
    Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
  7.  
    Access Key: 9AJ3IIIR4RA4TKOYFZGI # 复制上一步的对应key值
  8.  
    Secret Key: ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy # 复制上一步的对应key值
  9.  
    Default Region [US]: # 默认回车
  10.  
     
  11.  
    Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
  12.  
    S3 Endpoint [s3.amazonaws.com]: # 默认回车
  13.  
     
  14.  
    Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
  15.  
    if the target S3 system supports dns based buckets.
  16.  
    DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: # 默认回车
  17.  
     
  18.  
    Encryption password is used to protect your files from reading
  19.  
    by unauthorized persons while in transfer to S3
  20.  
    Encryption password:
  21.  
    Path to GPG program [/usr/bin/gpg]: # 默认回车
  22.  
     
  23.  
    When using secure HTTPS protocol all communication with Amazon S3
  24.  
    servers is protected from 3rd party eavesdropping. This method is
  25.  
    slower than plain HTTP, and can only be proxied with Python 2.7 or newer
  26.  
    Use HTTPS protocol [Yes]: no # 输入no
  27.  
     
  28.  
    On some networks all internet access must go through a HTTP proxy.
  29.  
    Try setting it here if you can't connect to S3 directly
  30.  
    HTTP Proxy server name: # 默认回车
  31.  
     
  32.  
    New settings:
  33.  
    Access Key: 9AJ3IIIR4RA4TKOYFZGI
  34.  
    Secret Key: ruXgDbxCEoPus1LTSbNUdotN2v3B21jI1k26GvQy
  35.  
    Default Region: US
  36.  
    S3 Endpoint: s3.amazonaws.com
  37.  
    DNS-style bucket+hostname:port template for accessing a bucket: %(bucket)s.s3.amazonaws.com
  38.  
    Encryption password:
  39.  
    Path to GPG program: /usr/bin/gpg
  40.  
    Use HTTPS protocol: False
  41.  
    HTTP Proxy server name:
  42.  
    HTTP Proxy server port: 0
  43.  
     
  44.  
    Test access with supplied credentials? [Y/n] n # 输入n
  45.  
     
  46.  
    Save settings? [y/N] y # 输入y
  47.  
    Configuration saved to '/root/.s3cfg'
3.2 修改刚生成的/root/.s3cfg中的三处配置
  1.  
    [root@user33 ~]# cat /root/.s3cfg | grep -n cloudfront_host
  2.  
    11:cloudfront_host = 10.18.33.143
  3.  
    [root@user33 ~]# cat /root/.s3cfg | grep -n host_base
  4.  
    35:host_base = 10.18.33.143:7480
  5.  
    [root@user33 ~]# cat /root/.s3cfg | grep -n host_bucket
  6.  
    36:host_bucket = 10.18.33.143:7480
3.3 创建名为test-bucket的bucket
  1.  
    [root@user33 ~]# s3cmd mb s3://test-bucket
  2.  
    Bucket 's3://test-bucket/' created
3.6 查看bucket桶列表
  1.  
    [root@user33 ~]# s3cmd ls
  2.  
    2024-04-22 06:49 s3://test-bucket
 
 
当单纯遇到单蠢时
关注
 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net 到底行不行!2000 人在线的客服系统真实屏录演示(附技术详解)

时常有朋友问我性能方面的问题,正好有一个真实客户,在线的访客数量达到了 2000 人。在争得客户同意后,我录了一个视频。升讯威在线客服系统可以在极低配置的服务器环境下,轻松应对这种情况,依然可以做到消息毫秒级送达,操作毫秒级响应。业余时间用 .net 写了一个免费的在…

记.Net Framework中wwwroot文件限制用户访问

背景 项目.Net Framework做的,已经线上跑了很多年了,突然发现用户上传的文件都被放到了wwwroot//Content/Upload目录,这些文件都是比较重要的,程序用来读取解析数据的,但是被直接可以公开访问了。 其实要改也很简单,代码改一下,文件挪一下位置就可以了,但是如果这样改就…

项目可能问问题

项目和简历 hr面试问题 自我介绍 面试官你好,我叫王首都,重庆邮电大学 计算机科学与技术专业研二在读,主要从事java后端开发,项目达人探店,它主要,实现了登录验证,缓存查询,优惠券秒杀,接口限流,以及签到打卡等功能。在上学期间获得了人民奖学金,新生奖学金,学业讲…

MongoDB 双活集群在运营商的实践

本文将着重分享某头部运营商订单中心在实现双活架构过程中的最佳实践,提供详细的技术细节和实际案例。通过介绍项目实施过程中的技术细节,提供类似场景需求的方案参考。在现代电信行业中,订单中心作为核心业务系统之一,承担着处理客户订单、管理订单状态、与各个业务系统进…

信创里程碑:TapData 与海量数据达成产品兼容互认证,共同助力基础设施国产化建设

测试结果显示,TapData LDP V3 与 Vastbase G100 V2.2 完全兼容,整体运行稳定高效,性能表现优秀,可为企业级客户提供可靠的中间件与数据库支撑。近日,深圳钛铂数据有限公司(以下简称钛铂数据)自主研发的钛铂实时数据平台(TapData Live Data Platform,TapData LDP)与北…

【日记】感觉自己已经魔怔了(817 字)

正文下午装档案的时候,无意间朝外看了一眼,发现自己视力衰退了好多。感觉两只眼睛都有散光了,看东西有重影。有些担心。兄长血检报告出来了,血红蛋白高,肌酐低。尿酸倒是正常了,但总体还是偏高。我觉得好奇怪,他降尿酸怎么这么难…… 更奇怪的是他说心电图时不紧张,但窦…

DNS正向解析和反向解析的区别

在网络世界中,域名系统(DNS)起着至关重要的作用,它就如同网络世界的导航地图,帮助我们在浩瀚的数字海洋中准确找到目标。而在DNS中,正向解析和反向解析是两个重要的概念,它们有着明显的区别。 首先,正向解析是将域名转换为IP地址的过程。当我们在浏览器中输入一个网址,…

DNS云解析和普通解析一样吗

在当今数字化时代,网络的稳定与高效运行至关重要。域名系统(DNS)作为互联网的基础设施之一,其解析服务的质量直接影响着用户的网络体验。近年来,DNS云解析逐渐兴起,与传统的普通解析相比,它们之间存在着显著的区别。 首先,在可靠性方面,DNS云解析具有明显优势。普通解…

【学习笔记】数学证明方法

持续更新中持续更新中最值定理前提条件: 函数 \(f(x)\) 在区间内是连续的在满足前提的情况下,设区间上界为 \(a\),下界为 \(b\) 那么函数 \(f(x)\) 一定能取到区间 \((a,b)\) 内的所有值介值定理前提条件: 函数 \(f(x)\) 在区间内是连续的当区间 \([a,b]\) 上界为 \(A\),下…

【YashanDB知识库】多表更新报错 YAS-04344 multi-table update is not supported

本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369204.html?templateId=1718516 【问题分类】功能使用 【关键字】YAS-04344,UPDATE,multi-table update,MERGE INTO 【问题描述】 在崖山环境执行类似以下语法进行多表更新报 YAS-04344 multi-…

解决方案 | ObjectARX开发版本对照表CAD1997-CAD2025,ObjectARX SDK版本、ObjectARX-Wizards版本、CAD版本、VS版本匹配表

众所周知,在一般情况下,需要ObjectARX SDK版本、ObjectARX-Wizards版本、CAD版本、VS版本版本匹配才能进行CAD二次开发。根据网络数据整理如下。 参考资料:https://blog.csdn.net/zhoufei95/article/details/121553501

【YashanDB知识库】查询YashanDB表空间使用率

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369203.html?templateId=1718516 【问题分类】功能使用 【关键字】表空间,使用率 【问题描述】YashanDB使用过程中,如何查询表空间的使用率 【问题原因分析】需要查询相应的YashanDB系统表,计算表空…