Linux系统运维

在 Ubuntu 20.04 上为超大数据盘分区

在 Ubuntu 20.04 上为超大数据盘(如 20TB 或更大)分区时,建议使用 gdisk 或 parted 而不是 fdisk,因为 fdisk 对于超过 2TB 的磁盘可能存在限制。下面是使用 gdisk 和 parted 的详细步骤:
使用 gdisk 分区步骤 1:安装 gdisk如果还没有安装 gdisk,先进行安装:
sh复制代码

sudo apt updatesudo apt install gdisk

步骤 2:列出磁盘列出所有磁盘以确认目标磁盘设备(假设为 /dev/sdb):
sh复制代码

sudo fdisk -l

步骤 3:使用 gdisk 创建新分区使用 gdisk 分区工具:
sh复制代码

sudo gdisk /dev/sdb

在 gdisk 交互界面中执行以下步骤:

使用 parted 分区步骤 1:安装 parted如果还没有安装 parted,先进行安装:
sh复制代码

sudo apt updatesudo apt install parted

步骤 2:列出磁盘列出所有磁盘以确认目标磁盘设备(假设为 /dev/sdb):
sh复制代码

sudo parted -l

步骤 3:使用 parted 创建新分区使用 parted 分区工具:
sh复制代码

sudo parted /dev/sdb

在 parted 交互界面中执行以下步骤:

步骤 4:格式化分区使用 mkfs 命令格式化新创建的分区(假设分区是 /dev/sdb1):
sh复制代码

sudo mkfs.ext4 /dev/sdb1

步骤 5:创建挂载点创建一个目录作为挂载点,例如 /mnt/data:
sh复制代码

sudo mkdir /mnt/data

步骤 6:挂载分区挂载新创建的分区到 /mnt/data:
sh复制代码

sudo mount /dev/sdb1 /mnt/data

步骤 7:自动挂载设置(可选)为了在系统重启后自动挂载分区,需要编辑 /etc/fstab 文件。首先获取新分区的 UUID:
sh复制代码

sudo blkid /dev/sdb1

然后编辑 /etc/fstab 文件:
sh复制代码

sudo nano /etc/fstab

添加以下内容(使用你实际的 UUID):
sh复制代码

UUID=你的UUID /mnt/data ext4 defaults 0 2

保存并退出编辑器。
检查挂载最后,验证挂载是否正确:
sh复制代码

df -h

通过这些步骤,你应该能够在 Ubuntu 20.04 上成功地为超大数据盘分区、格式化并挂载。

自动重启sz_driver脚本

#!/bin/bash

#########################################################################
# 使用方法:
# chmod +x /home/shuncom/services/scripts/sz_driver_mon.sh
# 00 03 * * 05 /bin/bash /home/shuncom/services/scripts/sz_driver_mon.sh
#########################################################################

sleep 30

set -i
source ~/.bashrc

# 当前时间
current_time="`date +%Y%m%d%H%M%S`"

# sz_driver的pid
sz_driver_pid="`pidof sz_driver`"

# 日志文件路径
sz_driver_mon_log="/home/shuncom/services/log/sz_server/${current_time}-sz_driver-mon.log"

# 判断sz_driver是否启动,没有启动时退出脚本并写入日志
if [ -z "${sz_driver_pid}" ]; then
  echo -e "${current_time} sz_driver not start" >> ${sz_driver_mon_log}
  exit 1
fi

# 重启驱动
/bin/sh /home/shuncom/services/scripts/driver stop  >/dev/null 2>&1
sleep 10
/bin/sh /home/shuncom/services/scripts/driver start >/dev/null 2>&1
sleep 10
/bin/sh /home/shuncom/services/scripts/driver status | grep 'is running' >/dev/null 2>&1
# 如果重启失败,退出脚本,写入日志
if [ $? -ne 0 ]; then
  echo -e "${current_time} sz_driver restart failed" >> ${sz_driver_mon_log}
  exit 1
fi
# 如果重启成功,退出脚本,写入日志
echo -e "${current_time} sz_driver restart success" >> ${sz_driver_mon_log}
exit 1

每天21点自动统计tcp连接数脚本

#!/bin/bash

#sudo chmod +x /home/shuncom/net_conn_count.sh
#crontab -e | 0 21 * * * /home/shuncom/net_conn_count.sh

# 获取当前时间
timestamp=$(date +"%Y-%m-%d %H:%M:%S")

# 获取 TCP 6011 端口的连接数
conn_count=$(netstat -an | grep ':6011' | grep -i tcp | wc -l)

# 获取网卡 eth0 的接收和发送数据包数
# 第3列为接收包,第11列为发送包
read rx_packets tx_packets <<< $(cat /proc/net/dev | awk '/eth0:/ {gsub(/:/,""); print $3, $11}')

# 写入日志文件
echo "$timestamp TCP 6011连接数: $conn_count, eth0接收包: $rx_packets, 发送包: $tx_packets" >> /home/shuncom/net_conn_count.log

image.png

自动清除15天前的日志脚本

#!/bin/bash

#0 1 * * * /home/shuncom/auto_del_sz_log.sh

# 设置变量
target_dir="/home/shuncom/services/log/sz_server"
log_file="/home/shuncom/log/del_driver_log.log"
current_time="$(date '+%Y-%m-%d %H:%M:%S')"

# 执行删除操作并记录日志
echo "[$current_time] Start deleting files older than 15 days in $target_dir" >> "$log_file"

find "$target_dir" -type f -mtime +15 -print -delete >> "$log_file" 2>&1

echo "[$current_time] Deletion complete." >> "$log_file"
echo "---------------------------------------------" >> "$log_file"

check_and_sync.sh

#!/bin/bash
#chmod +x /home/shuncom/bin/check_and_sync.sh
#30 1 * * * /home/shuncom/bin/check_and_sync.sh

# 检查是否有名为“shun-sync”的进程
PROCESS_NAME="shun-sync"
PROCESS_ID=$(pgrep -f $PROCESS_NAME)

# 如果找到进程,则杀掉该进程
if [ ! -z "$PROCESS_ID" ]; then
    kill $PROCESS_ID
    echo "$(date): Killed process $PROCESS_NAME with PID $PROCESS_ID" >> /home/shuncom/log/check_and_sync.log
fi

# 执行sttsync脚本
sh /home/shuncom/bin/sttsync
echo "$(date): Executed sttsync script" >> /home/shuncom/log/check_and_sync.log

ubuntu系统一网卡多IP配置

#ubuntu18.04配置

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 222.222.63.231/24
        - 192.168.3.11/24
      gateway4: 192.168.3.1
      routes:
        - to: 222.222.63.0/24
          via: 222.222.63.1
      nameservers:
        addresses:
          - 202.96.209.5
          - 223.5.5.5

network:
    ethernets:
        eth0:
            addresses:
            - 172.17.20.17/24
            - 192.168.1.17/24
            gateway4: 192.168.1.1
            routes:
                    - to: 172.17.20.0/24
                      via: 172.17.20.254
            nameservers:
                addresses:
                - 114.114.114.114
    version: 2

 

#ubuntu14.04配置

# 主IP地址配置(eth0)
auto eth0
iface eth0 inet static
    address 192.168.1.19
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 192.168.0.5

# 子IP地址配置(eth0:1)
auto eth0:1
iface eth0:1 inet static
    address 10.2.2.19
    netmask 255.255.255.0
    gateway 10.2.2.1
    dns-nameservers 202.96.209.5

ip route add default via 192.168.1.1 dev eth0 metric 100
ip route add default via 10.2.2.1 dev eth0:1 metric 200

 

麒麟v10查询激活授权

你当前系统中安装了部分与激活相关的组件:
✅ 已安装组件说明:

kylin-activation-ukey-driver-1.0-1.p01.ky10.x86_64
libkylin-activation-3.0-64.p69.ky10.x86_64

这说明你系统中安装了:

    libkylin-activation:激活相关的库;

    ukey-driver:支持通过 USB Key(UKey)激活的驱动模块。

❌ 但缺失核心工具:

没有安装主控工具 kylin-activation 命令行工具本体,也就是你无法通过命令 kylin-activation status 检查激活状态的根本原因。
✅ 解决方案

你需要安装完整的 kylin-activation 工具包。请尝试以下方式之一:
🔧 方法一:使用 yum 安装主工具包

sudo yum install kylin-activation

    如果提示找不到软件包,很可能是你的系统未配置银河麒麟官方的商业源。你可以尝试添加银河麒麟官方源(需要授权账户)或使用离线 RPM 包。

🔧 方法二:查找并安装 RPM 包(适用于无网络环境)

如果你有镜像安装介质或离线软件包仓库,可以手动安装:

cd /path/to/rpm-packages/
sudo rpm -ivh kylin-activation-*.rpm

🔧 方法三:使用 GUI 检查激活状态(如果有图形界面)

在图形界面中进入:

“控制中心” → “系统信息” 或 “关于本机”

部分版本会显示激活状态。
✅ 临时替代检测方法

你可以尝试查看系统日志中是否有激活信息:

grep -i activation /var/log/messages

也可以查看授权库中是否有激活文件:

 

银河麒麟 V10 自带激活工具,通常命令如下:

sudo kylin-activation status

如果命令存在,会返回类似以下内容:

    ✅ 已激活状态:

当前系统已激活
激活码:XXXX-XXXX-XXXX-XXXX
激活时间:2024-10-01
激活类型:永久授权

❌ 未激活状态:

当前系统未激活
请联系银河麒麟客服获取激活码

如果你无法安装 GUI,但又想临时运行这个工具,可以安装 xvfb(虚拟帧缓冲)模拟图形界面运行:

sudo yum install -y xorg-x11-server-Xvfb
xvfb-run kylin-activation status

 

 

儒来部署步骤-20250514

儒来平台部署

 

部署前全局系统优化

 

ubuntu18.04更换阿里云源

cp /etc/apt/sources.list /etc/apt/sources.list.bak

 

cat > /etc/apt/sources.list << EOF

deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

EOF

 

apt update && apt upgrade -y

 

sudo hostnamectl set-hostname rulr-1

 

中国:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\

apt-get install ntpdate -y &&\

if ! crontab -l | grep "ntpdate" &>/dev/null; then

(echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1"; crontab -l) | crontab

fi

 

越南:

ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime &&\

apt-get install ntpdate -y &&\

if ! crontab -l | grep "ntpdate" &>/dev/null; then

(echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1"; crontab -l) | crontab

fi

 

埃塞俄比亚

ln -sf /usr/share/zoneinfo/Africa/Addis_Ababa /etc/localtime &&\

apt-get install ntpdate -y &&\

if ! crontab -l | grep "ntpdate" &>/dev/null; then

(echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1"; crontab -l) | crontab

fi

 

cat >> /etc/sysctl.conf << EOF

kernel.pid_max = 4194303

#net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_tw_reuse = 1

net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_tw_buckets = 20480

net.ipv4.tcp_max_syn_backlog = 20480

net.core.netdev_max_backlog = 262144

net.ipv4.tcp_fin_timeout = 20

vm.swappiness = 0

net.core.somaxconn = 20480

vm.overcommit_memory = 1

net.core.rmem_default = 262144

net.core.rmem_max = 16777216

net.core.wmem_default = 262144

net.core.wmem_max = 16777216

net.ipv4.tcp_wmem = 4096 131072 1048576

net.ipv4.tcp_rmem = 4096 131072 1048576

net.ipv4.tcp_mem = 786432 1048576 1572864

net.ipv4.tcp_max_orphans = 262144

net.ipv4.tcp_fastopen = 3

fs.aio-max-nr = 1048576

net.ipv4.tcp_keepalive_time = 1800

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.tcp_keepalive_intvl = 15

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

EOF

sysctl -p

 

cat >> /etc/security/limits.conf << EOF

* soft     nproc          65535

* hard     nproc          65535

* soft     nofile         65535

* hard     nofile         65535

root soft     nproc          65535

root hard     nproc          65535

root soft     nofile         65535

root hard     nofile         65535

EOF

su -

ulimit -n

 

 

# 查看系统语言

echo $LANG

en_US.UTF-8

 

# 如果系统语言不是"en_US.UTF-8"时按下面的步骤进行修改,选中en_US.UTF-8 UTF-8

# dpkg-reconfigure locales

上下键: 连续内容上下移动光标 tab: 不连续内容移动光标 space: 选中内容,确认

 

安装dockerdocker-composerulr-1 rulr-5

上传 docker_debs_2021_Rulr6.zip

scp -P 53022 shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/docker_debs_2021_Rulr6.zip ./

 

sudo apt install -y unzip

 

unzip docker_debs_2021_Rulr6.zip &&\

cd docker_debs_2021_Rulr6 &&\

dpkg -i *.deb &&\

mv docker-compose-Linux-x86_64_1.29.2 /usr/bin/docker-compose &&\

chmod +x /usr/bin/docker-compose &&\

usermod -aG docker shuncom &&\

id shuncom &&\

docker -v &&\

docker-compose version

 

第一章、部署应用-1

 

rulr-1

 

sudo su

 

sudo docker network create --subnet=172.18.0.0/16 rulr-network &&\

sudo docker network ls

 

su - shuncom

 

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/30.16/* ./

 

cd /home/shuncom

tar -zxvf servers-20250512.tar.gz

tar -zxvf www-20250512.tar.gz

 

mkdir -p /home/shuncom/log/dubbo/registry/cache &&\

mkdir -p /home/shuncom/log/nginx &&\

mkdir -p /home/shuncom/log/shuncom-oauth2-server/tomcat &&\

mkdir -p /home/shuncom/log/web-maintain &&\

mkdir -p /home/shuncom/log/web-things &&\

mkdir -p /home/shuncom/log/web-user &&\

mkdir -p /home/shuncom/log/model-proxy-server

 

 

cat > /home/shuncom/compose/.env << EOF

RULR_MYSQL=172.17.20.17

RULR_ZOOKEEPER=172.17.20.15

RULR_REDIS=172.17.20.15

RULR_INFLUXDB=172.17.20.16

RULR_RABBITMQ=172.17.20.15

HOSTIP=172.17.20.11

WEB_HOST=172.17.20.11

WEB_PORT=443

RULR_1=172.17.20.11

RULR_3=172.17.20.13

RULR_4=172.17.20.14

JAVA_IMAGE=openjdk:8-alpine3.9-tini

DB_USER=shuncom

EOF

 

sudo chown -R root.root /home/shuncom/www &&\

sudo chown -R shuncom.shuncom /home/shuncom/www/rulr

 

2cpus 改为1.4

vi docker-compose.yml

 

%s/'2.8'/'1.4'/gc

 

rulr-model-proxy-server.jar包从rulr-2获取

rulr-2执行:

scp -r /home/shuncom/servers/model-proxy-server/ shuncom@172.17.20.11:/home/shuncom/servers/

 

docker image load -i nginx_1.20.2.tar &&\

docker image load -i openjdk_8-alpine3.9.tar &&\

docker image load -i openjdk_8-alpine3.9-tini.tar

docker-compose build &&\

docker-compose up -d &&\

docker-compose ps

 

脚本路径:本地部署\RulrDeploy\ServiceComponents\ops_tools

执行 installCleanLog31.sh 安装清理逻辑

执行rotateNginxLog31.sh 安装清理nginx日志配置

 

第二章、部署应用-2

 

rulr-2

 

sudo su

 

docker network create --subnet=172.18.0.0/24 rulr-network &&\

docker network ls

 

su - shuncom

 

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/30.17/* ./

 

cd /home/shuncom/

tar -zxvf servers-20250512.tar.gz

 

mkdir -p /home/shuncom/log/dtumt-connect &&\

mkdir -p /home/shuncom/log/engine-action-server &&\

mkdir -p /home/shuncom/log/engine-alarm-server &&\

mkdir -p /home/shuncom/log/engine-timing-server &&\

mkdir -p /home/shuncom/log/engine-trigger-server &&\

mkdir -p /home/shuncom/log/model-converter-server &&\

mkdir -p /home/shuncom/log/model-event-server &&\

mkdir -p /home/shuncom/log/model-proxy-server &&\

mkdir -p /home/shuncom/log/model-task-schedule

 

cat > /home/shuncom/compose/.env << EOF

RULR_MYSQL=172.17.20.17

RULR_ZOOKEEPER=172.17.20.15

RULR_REDIS=172.17.20.15

RULR_INFLUXDB=172.17.20.16

RULR_RABBITMQ=172.17.20.15

HOSTIP=172.17.20.12

WEB_HOST=172.17.20.11

WEB_PORT=443

RULR_1=172.17.20.11

RULR_3=172.17.20.13

RULR_4=172.17.20.14

JAVA_IMAGE=openjdk:8-alpine3.9-tini

DB_USER=shuncom

EOF

 

2cpus 改为1.4

%s/'2.8'/'1.4'/gc

3cpus  改为1.5

%s/'3'/'1.5'/gc

 

 

cd /home/shuncom/compose/ &&\

docker load -i openjdk_8-ffmpeg.tar &&\

docker load -i openjdk_8-alpine3.9.tar &&\

docker load -i openjdk_8-alpine3.9-tini.tar &&\

docker-compose build &&\

docker-compose up -d &&\

docker-compose ps

 

su - shuncom

chmod +x /home/shuncom/ops_tools/*

/home/shuncom/ops_tools/installCleanLog31.sh

 

第三章、部署应用-3

 

rulr-3

 

sudo su

 

docker network create --subnet=172.18.0.0/16 rulr-network

docker network ls

 

su - shuncom

 

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/30.18/* ./

 

cd /home/shuncom/

tar -zxvf servers-20250512.tar.gz

tar -zxvf www-20250512.tar.gz

 

su - shuncom

mkdir -p /home/shuncom/log/advice-server &&\

mkdir -p /home/shuncom/log/batch-proxy-server &&\

mkdir -p /home/shuncom/log/dtumt-connect &&\

mkdir -p /home/shuncom/log/dubbo/registry/cache &&\

mkdir -p /home/shuncom/log/model-data-resolver &&\

mkdir -p /home/shuncom/log/model-task-batch &&\

mkdir -p /home/shuncom/log/nginx &&\

mkdir -p /home/shuncom/log/pph-proxy-handler/tomcat &&\

mkdir -p /home/shuncom/log/push-tripartite &&\

mkdir -p /home/shuncom/log/shuncom-onbon-server

 

cat > /home/shuncom/compose/.env << EOF

RULR_MYSQL=172.17.20.17

RULR_ZOOKEEPER=172.17.20.15

RULR_REDIS=172.17.20.15

RULR_INFLUXDB=172.17.20.16

RULR_RABBITMQ=172.17.20.15

HOSTIP=172.17.20.13

WEB_HOST=172.17.20.11

WEB_PORT=443

RULR_1=172.17.20.11

RULR_3=172.17.20.13

RULR_4=172.17.20.14

JAVA_IMAGE=openjdk:8-alpine3.9-tini

DB_USER=shuncom

EOF

 

%s/'2.8'/'1.4'/gc

 

cd /home/shuncom/compose/ &&\

docker image load -i nginx_1.20.2.tar &&\

docker image load -i openjdk_8-alpine3.9.tar &&\

docker image load -i openjdk_8-alpine3.9-tini.tar &&\

docker-compose build &&\

docker-compose up -d &&\

docker-compose ps

 

su - shuncom

chmod +x /home/shuncom/ops_tools/*

/home/shuncom/ops_tools/installCleanLog31.sh

sudo /home/shuncom/ops_tools/rotateNginxLog31.sh

 

第四章、部署应用-4

 

rulr-4

 

sudo su

 

docker network create --subnet=172.18.0.0/16 rulr-network &&\

docker network ls

 

su  -  shuncom

 

应用资源来自 192.168.30.41

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/30.41/* ./

 

cd /home/shuncom/

tar -zxvf servers-20250512.tar.gz

 

mkdir -p /home/shuncom/log/dtumt-connect &&\

mkdir -p /home/shuncom/log/dtumt-handler &&\

mkdir -p /home/shuncom/log/dtumt-transmission &&\

mkdir -p /home/shuncom/log/dubbo/registry/cache &&\

mkdir -p /home/shuncom/log/gateway-connect &&\

mkdir -p /home/shuncom/log/gateway-handler &&\

mkdir -p /home/shuncom/log/gateway-proxy-handler &&\

mkdir -p /home/shuncom/log/light-connect-gateway &&\

mkdir -p /home/shuncom/log/light-connect-tcp &&\

mkdir -p /home/shuncom/log/light-proxy-handler &&\

mkdir -p /home/shuncom/log/mt-event-server &&\

mkdir -p /home/shuncom/log/nginx &&\

mkdir -p /home/shuncom/log/tripartite-connect &&\

mkdir -p /home/shuncom/log/tripartite-connect-sensor

 

cat > /home/shuncom/compose/.env << EOF

RULR_MYSQL=172.17.20.17

RULR_ZOOKEEPER=172.17.20.15

RULR_REDIS=172.17.20.15

RULR_INFLUXDB=172.17.20.16

RULR_RABBITMQ=172.17.20.15

HOSTIP=172.17.20.14

WEB_HOST=172.17.20.11

WEB_PORT=443

RULR_1=172.17.20.11

RULR_3=172.17.20.13

RULR_4=172.17.20.14

JAVA_IMAGE=openjdk:8-alpine3.9-tini

DB_USER=shuncom

EOF

 

cd /home/shuncom/compose/ &&\

docker image load -i nginx-tcp-24.08.19.tar &&\

docker image load -i nginx-tcp.tar &&\

docker image load -i openjdk_8-alpine3.9.tar &&\

docker image load -i openjdk_8-alpine3.9-tini.tar

 

#如果是2核做如下修改:

vi docker-compose.yml

%s/'2.8'/'1.4'/gc

 

cp docker-compose.yml docker-compose.yml.bak

vi docker-compose.yml

 

修改docker-compose.yml,先运行 set paste

 

#  nginx-tcp:

#    image: nginx-tcp

#    build:

#      context: ./

#      dockerfile: NginxTcp

 

 

%s/image: nginx-tcp/image: nginx-tcp:24.08.19/gc

 

docker-compose build &&\

docker-compose up -d &&\

docker-compose ps

 

脚本路径:本地部署\RulrDeploy\ServiceComponents\ops_tools

执行./installCleanLog31.sh 安装清理逻辑

执行sudo ./rotateNginxLog31.sh 安装清理nginx日志配置

 

第五章、部署中间件

 

rulr-5

 

sudo su

 

docker network create --subnet=172.18.0.0/16 rulr-network &&\

docker network ls

 

2 创建应用目录

 

su - shuncom

 

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/rediszoorabbitmq/* ./

 

mkdir -p /home/shuncom/rulr/conf/redis &&\

mkdir -p /home/shuncom/logs/rabbitmq &&\

mkdir -p /home/shuncom/rulr/conf/rabbitmq &&\

chmod 757 /home/shuncom/logs/rabbitmq &&\

chmod 757 /home/shuncom/rulr/conf/rabbitmq &&\

mkdir -p /home/shuncom/rulr/conf/zookeeper &&\

mkdir -p /home/shuncom/compose

 

 

cat > /home/shuncom/compose/.env << EOF

RULR_MYSQL=172.17.20.17

RULR_ZOOKEEPER=172.17.20.15

RULR_REDIS=172.17.20.15

RULR_INFLUXDB=172.17.20.16

RULR_RABBITMQ=172.17.20.15

HOSTIP=172.17.20.15

WEB_HOST=172.17.20.11

WEB_PORT=443

RULR_1=172.17.20.11

RULR_3=172.17.20.13

RULR_4=172.17.20.14

JAVA_IMAGE=openjdk:8-alpine3.9-tini

DB_USER=shuncom

EOF

 

 

3 上传应用配置文件

cd /home/shuncom/compose &&\

cp redis-5.0.14/6379.conf ../rulr/conf/redis/ &&\

cp rabbitmq-3.7.26/rabbitmq.conf ../rulr/conf/rabbitmq/ &&\

chmod 667 /home/shuncom/rulr/conf/rabbitmq/rabbitmq.conf &&\

cp zookeeper-3.5.8/log4j.properties ../rulr/conf/zookeeper/ &&\

cp zookeeper-3.5.8/zoo.cfg ../rulr/conf/zookeeper/

 

(4) compose

# 配置文件上传(docker-compose.yml)

# cd /home/shuncom/compose

 

docker image load -i rabbitmq_3.7.26.tar &&\

docker image load -i redis_5.0.14.tar &&\

docker image load -i zookeeper_3.5.8.tar

 

cp docker-compose.yml docker-compose.yml.bak

vi docker-compose.yml

删除mysql infuxdb部分内容

 

如何是2CPU

%s/'2.8'/'1.4'/gc

 

#如果内存小于8G,这里要修改一下把4096改为2048

vi /home/shuncom/rulr/conf/rabbitmq/rabbitmq.conf

vm_memory_high_watermark.absolute=2048MB

 

%s/4096/2048/gc

 

4 启动应用服务并查看服务状态

cd /home/shuncom/compose &&\

docker-compose up -d &&\

docker-compose ps

 

5 rabbitmq开启web管理

docker exec -it rulr-rabbit bash

rabbitmq-plugins enable rabbitmq_management

exit

 

6 应用访问测试

(1) 访问redis

docker exec -it rulr-redis bash

redis-cli -h 127.0.0.1 -a 'sz_clighting' -p 6379

127.0.0.1:6379> CONFIG get maxclients

1) "maxclients"

2) "10000"

127.0.0.1:6379> keys *

(empty list or set)

127.0.0.1:6379> exit

root@f39b51dab023:/data# redis-cli --version

redis-cli 5.0.14

root@f39b51dab023:/data# exit

 

(2) 访问rabbitmq

URL: http://172.17.20.15:15672/

Username: shuncom_mq

Password: sz_clighting_mq

 

需要开启WEB管理。可通过以下方式(查看服务状态):

docker exec -it rulr-rabbit rabbitmqctl status

 

(3) 访问zookeeper

docker exec -it rulr-zookeeper bash

 

zkCli.sh -server 127.0.0.1:2181

[zk: 127.0.0.1:2181(CONNECTED) 0] ls /

[zookeeper]

[zk: 127.0.0.1:2181(CONNECTED) 1] quit

root@2ad68fbb302e:/apache-zookeeper-3.5.8-bin# exit

 

第六章、部署InfluxDB

 

rulr-6

 

sudo su

 

1 下载influxdb软件包

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.10_linux_amd64.tar.gz

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/influxdb/influxdb-1.8.10_linux_amd64.tar.gz ./

 

2 安装influxdb

tar -zxvf influxdb-1.8.10_linux_amd64.tar.gz &&\

mv influxdb-1.8.10-1 influxdb &&\

useradd -M -s /usr/sbin/nologin influxdb &&\

id influxdb

uid=1601(influxdb) gid=1601(influxdb) groups=1601(influxdb)

 

3 配置influxdb配置文件

cat > /home/shuncom/influxdb/etc/influxdb/influxdb.conf << EOF

reporting-disabled = false

bind-address = "127.0.0.1:8088"

[meta]

dir = "/home/shuncom/influxdb/var/lib/influxdb/meta"

[data]

dir = "/home/shuncom/influxdb/var/lib/influxdb/data"

wal-dir = "/home/shuncom/influxdb/var/lib/influxdb/wal"

series-id-set-cache-size = 100

[coordinator]

[retention]

[shard-precreation]

[monitor]

[http]

enabled = true

bind-address = ":8086"

auth-enabled = false

[logging]

[subscriber]

[[graphite]]

[[collectd]]

[[opentsdb]]

[[udp]]

[continuous_queries]

[tls]

EOF

 

4 InfluxDB服务加入systemd

cat > /lib/systemd/system/influxdb.service << EOF

[Unit]

Description=InfluxDB is an open-source, distributed, time series database

Documentation=https://docs.influxdata.com/influxdb/

After=network-online.target

 

[Service]

User=influxdb

Group=influxdb

LimitNOFILE=65536

ExecStart=/home/shuncom/influxdb/usr/bin/influxd -config /home/shuncom/influxdb/etc/influxdb/influxdb.conf \$INFLUXD_OPTS

KillMode=control-group

Restart=on-failure

RestartSec=2s

[Install]

WantedBy=multi-user.target

Alias=influxdb.service

EOF

 

5 设置InfluxDB日志

cat > /etc/rsyslog.d/influxdb.conf << EOF

### InfluxDB Rules ###

if \$programname == 'influxd' then {

action(type="omfile" file="/home/shuncom/influxdb/var/log/influxdb/influxd.log")

stop

}

EOF

 

# 重启rsyslog服务

systemctl restart rsyslog.service

 

# 修改配置文件并加入系统定时日志切割任务

cat > /home/shuncom/influxdb/etc/logrotate.d/influxdb << EOF

/home/shuncom/influxdb/var/log/influxdb/influxd.log {

daily

rotate 7

missingok

dateext

copytruncate

compress

}

EOF

 

chown -R influxdb.influxdb /home/shuncom/influxdb/ &&\

chmod 757 /home/shuncom/influxdb/var/log/influxdb/

 

6 启动InfluxDB

systemctl daemon-reload &&\

systemctl start influxdb.service &&\

systemctl enable influxdb.service &&\

systemctl status influxdb.service

 

cat >> ~/.bashrc << EOF

export PATH=/home/shuncom/influxdb/usr/bin:\$PATH

EOF

source ~/.bashrc

su - shuncom

cat >> ~/.bashrc << EOF

export PATH=/home/shuncom/influxdb/usr/bin:\$PATH

EOF

source ~/.bashrc

exit

influx -version

 

InfluxDB shell version: 1.8.10

 

7 InfluxDB管理员创建

(1) 创建管理员

influx

show users

create user root with password 'root_influxdb' with all privileges

show users

exit

 

(2) 开启influxdb认证

修改influxdb.conf配置文件,

sudo vi /home/shuncom/influxdb/etc/influxdb/influxdb.conf

[http]标签下"auth-enabled = false"

改为"auth-enabled = true"

 

(3) 重启InfluxDB服务

systemctl restart influxdb.service

 

(4) InfluxDB认证登录

influx -host 127.0.0.1 -port 8086 -username root -password 'root_influxdb'

 

create database rulr_things;

 

2 设置库数据保留规则

use rulr_things;

CREATE RETENTION POLICY three_days ON rulr_things DURATION 3d REPLICATION 1;

CREATE RETENTION POLICY seven_days ON rulr_things DURATION 7d REPLICATION 1;

CREATE RETENTION POLICY half_year ON rulr_things DURATION 180d REPLICATION 1;

CREATE RETENTION POLICY one_year ON rulr_things DURATION 365d REPLICATION 1;

show retention policies;

 

3 创建用户

create user shuncom with password 'shuncom_influxdb_passwd';

grant all privileges on rulr_things to shuncom;

show grants for shuncom;

exit

 

部署Mysql 延迟从库步骤看第七章:

 

第七章、部署Mysql主库

 

rulr-7

 

sudo su

 

1 下载mysql软件包

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

 

scp -P 53022 -r shuncomlog@shuncom.3322.org:/home/shuncomlog/rulr/mysql/* ./

 

2 安装mysql

(1) 安装mysql依赖包

apt install libaio1 -y

 

(2) 解压mysql安装包

tar -xf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz &&\

mv mysql-8.0.20-linux-glibc2.12-x86_64/ /home/shuncom/mysql/

 

(3) 创建mysql用户

groupadd -g 1600 mysql &&\

useradd -g mysql -u 1600 -M -s /sbin/nologin mysql &&\

id mysql

uid=1600(mysql) gid=1600(mysql) groups=1600(mysql)

 

(4) 创建存放数据库文件的目录并赋予mysql安装目录的属主和属组都是mysql

mkdir -p /home/shuncom/mysql/data/ &&\

chown -R mysql.mysql /home/shuncom/mysql/

 

3 配置mysql my.cnf文件

cat > /etc/my.cnf << EOF

[client]

port = 3306

default-character-set = utf8mb4

socket = /home/shuncom/mysql/data/mysql.sock

[mysql]

no-auto-rehash

[mysqld]

default-time_zone = '+00:00'

user = mysql

port = 3306

basedir = /home/shuncom/mysql

datadir = /home/shuncom/mysql/data

socket = /home/shuncom/mysql/data/mysql.sock

bind-address = 0.0.0.0

pid-file = /home/shuncom/mysql/data/mysqld.pid

character-set-server = utf8mb4

collation-server = utf8mb4_0900_ai_ci

log-error = /home/shuncom/mysql/data/mysqld.log

slow_query_log = ON

long_query_time = 2

slow_query_log_file = /home/shuncom/mysql/data/mysql-slow.log

max_connections = 1024

open_files_limit = 65535

innodb_buffer_pool_size = 2G

innodb_flush_log_at_trx_commit = 2

innodb_log_file_size = 256M

transaction_isolation = READ-UNCOMMITTED

# transaction_isolation = READ-COMMITTE

default-storage-engine = innodb

innodb_file_per_table = on

innodb_flush_method = O_DIRECT

interactive_timeout = 1800

wait_timeout = 1800

innodb_open_files=1500

innodb_io_capacity=5000

innodb_buffer_pool_instances=4

innodb_autoextend_increment=64

innodb_purge_threads=1

innodb_purge_batch_size=150

innodb_write_io_threads=4

innodb_read_io_threads=4

innodb_concurrency_tickets=2500

explicit_defaults_for_timestamp = 1

skip-name-resolve

lower_case_table_names = 1

server-id = 1

skip-log-bin

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

[mysqldump]

quick

max_allowed_packet = 32M

EOF

 

4 初始化mysql 数据库

/home/shuncom/mysql/bin/mysqld --initialize --user=mysql --basedir=/home/shuncom/mysql --datadir=/home/shuncom/mysql/data

 

5 mysql服务加入到systemd

cat > /lib/systemd/system/mysqld.service << EOF

[Unit]

Description=MySQL Server 8.0.20

Documentation=man:mysqld(8)

Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html

After=network.target

After=syslog.target

[Install]

WantedBy=multi-user.target

[Service]

User=mysql

Group=mysql

Type=forking

PIDFile=/home/shuncom/mysql/data/mysqld.pid

TimeoutSec=0

PermissionsStartOnly=true

# ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd

ExecStart=/home/shuncom/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/home/shuncom/mysql/data/mysqld.pid \$MYSQLD_OPTS

EnvironmentFile=-/etc/sysconfig/mysql

LimitNOFILE = 65535

Restart=on-failure

RestartPreventExitStatus=1

PrivateTmp=false

EOF

 

6 启动mysql数据库

systemctl daemon-reload &&\

systemctl start mysqld.service &&\

systemctl enable mysqld.service &&\

systemctl status mysqld.service

 

cat >> ~/.bashrc << EOF

export PATH=/home/shuncom/mysql/bin:\$PATH

EOF

source ~/.bashrc

su - shuncom

cat >> ~/.bashrc << EOF

export PATH=/home/shuncom/mysql/bin:\$PATH

EOF

source ~/.bashrc

exit

mysql --version

mysql  Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)

 

7 修改mysql数据库密码

grep 'temporary password' /home/shuncom/mysql/data/mysqld.log

2022-09-06T07:24:22.857237Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: x2z?tj79y,dI

 

mysql -uroot -p'tji?RNa1Ly9N'

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Sz_clighting';

flush privileges;

exit;

 

4.1 mysql导库,部署主从,先部署好了再做建库、导库

1 创建库、创建用户并赋权

mysql -u root -p'Sz_clighting'

 

CREATE DATABASE rulr_things DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

create user "shuncom"@"%" identified by "sh_clighting";

grant all on rulr_things.* to "shuncom"@"%";

exit

 

2 导入表结构和表数据

 

mkdir -p /home/shuncom/update_mysql/ &&\

chmod +x /home/shuncom/update_mysql/update_mysql.sh

 

2、如果初始化脚本低于当前部署版本,应用迁移工具(rulr-db-migrate_vx.x.x.jar)进行升级

 

(2) 部署jdk

tar -xzf jdk-8u251-linux-x64.tar.gz &&\

mv jdk1.8.0_251/ /usr/local/jdk/

 

cat >> ~/.bashrc << EOF

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/jre/lib/rt.jar

export PATH=\$JAVA_HOME/bin:\$PATH

EOF

source ~/.bashrc

su - shuncom

cat >> ~/.bashrc << EOF

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/jre/lib/rt.jar

export PATH=\$JAVA_HOME/bin:\$PATH

EOF

source ~/.bashrc

exit

 

(4) 查看jdk版本

java -version

java version "1.8.0_251"

 

Mysql 升级前查看 max_binlog_cache_size 大小,并记录值,否则有可能报销

mysql -u root -p'Sz_clighting'

 

show variables like "%max_binlog%";

 

3、如果 max_binlog_cache_size < 33554432

set global max_binlog_cache_size=33554432;

show variables like "%max_binlog%";

 

4、更新完成后,还原max_binlog_cache_size配置(如果有修改)

 

mysql -u root -p'Sz_clighting'

 

set global max_binlog_cache_size=8388608;

show variables like "%max_binlog%";

 

 

当前SQL导入与维护方式已更新!

1、执行初始化sql脚本

mysql -u shuncom -p'sh_clighting'

 

use rulr_things

 

source /home/shuncom/v3.11.11__aliyun_init_db_dump.sql

 

cd /home/shuncom/update_mysql

vi update_mysql.sh

修改初始版本(本例是v3.11.11),升级版本 v3.11.11

修改jdk路径 /usr/local/jdk/

保存退出

 

./update_mysql.sh

 

mkdir -p log/shuncom-db-migrate

第八章、Mysql主、从复制

 

1、主从节点开启log_bin,配置文件中移除 skip-log-bin 配置项

 

 

2、增加主从复制配置 [mysqld]

a、主节点

vi /etc/my.cnf

 

server-id = 1

log-bin = /home/shuncom/mysql/data/mysql-bin

binlog_cache_size = 4M

binlog_format = mixed

max_binlog_cache_size = 8M

max_binlog_size = 512M

expire_logs_days = 14

gtid_mode = ON

enforce_gtid_consistency = ON

 

重启mysql服务

systemctl restart mysqld.service

 

b、从节点

vi /etc/my.cnf

 

server-id = 2

slave-skip-errors=1007,1022,1050,1062,1169

relay-log=/home/shuncom/mysql/data/relay-log

max_relay_log_size=512M

relay-log-purge=ON

read-only

gtid_mode = ON

enforce_gtid_consistency = ON

 

重启mysql服务

systemctl restart mysqld.service

 

3、创建主从复制账户

a、以root登录主节点

mysql -u root -p'Sz_clighting'

b、创建复制用户(用户名、密码为示例),并授予权限

CREATE USER 'replicator'@'%' IDENTIFIED BY 'Passw0rd';  

GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';  

FLUSH PRIVILEGES;

SHOW MASTER STATUS\G; -- 获取 MASTER_LOG_FILEMASTER_LOG_POS

 

 

4、从节点开启复制

a、以root用户登录从节点

mysql -u root -p'Sz_clighting'

b、开启复制

CHANGE MASTER TO

MASTER_HOST='172.17.20.17',

MASTER_PORT=3306,

MASTER_USER='replicator',

MASTER_PASSWORD='Passw0rd',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=868,

get_master_public_key=1;

 

CHANGE MASTER TO MASTER_DELAY = 3600;

START SLAVE;

SHOW SLAVE STATUS\G;

 

 

      

Docker容器的导入和导出

导出指定docker镜像
docker save -o xampp_7.tar ef5954c4d0d1
恢复上面导出的镜像
docker load -i xampp_7.tar
镜像改名
docker tag c1b6ba59135e amazoncorretto:8u352-alpine3.16-tini

修改镜像版本
docker commit <container_name_or_id> <new_image_name>:<tag>

1. 停止容器

docker-compose down
2. 导出镜像
导出 docker-compose 中定义的所有镜像:

docker-compose config | awk '/image:/{print $2}' | xargs -I {} docker save -o {}.tar {}

这将为 docker-compose.yml 中定义的所有镜像创建 .tar 文件。

3. 导出数据卷(如果有使用数据卷)
如果容器使用了数据卷并且你想备份这些数据卷,可以使用以下命令:

首先,列出容器使用的数据卷:

docker volume ls

然后,导出特定的数据卷(例如 my_volume):

docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar czf /backup/my_volume.tar.gz -C /volume .
4. 打包为 tar.gz
将导出的镜像和数据卷一起打包为 tar.gz 文件:

tar czf docker_backup.tar.gz *.tar *.tar.gz
拷贝文件到目标服务器
将 docker_backup.tar.gz 文件拷贝到目标服务器,可以使用 scp 或其他文件传输工具。

scp docker_backup.tar.gz user@target_server:/path/to/destination

在目标服务器上恢复

1. 解压 tar.gz 文件
在目标服务器上解压 docker_backup.tar.gz 文件:

tar xzf docker_backup.tar.gz

2. 加载镜像
加载导出的Docker镜像:

for image in *.tar; do docker load -i $image; done

docker load -i mongodb:24.8.9.1.tar &&\
docker load -i mysql:24.8.2.tar &&\
docker load -i rabbitmq:24.8.2.tar &&\
docker load -i redis:3.2.2.tar &&\
docker load -i szdriver:24.8.9.7.tar &&\
docker load -i javaapp:24.8.9.2.tar


3. 还原数据卷(如果有备份数据卷)

还原数据卷:
docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar xzf /backup/my_volume.tar.gz -C /volume

4. 启动容器
确保 docker-compose.yml 文件已复制到目标服务器,然后启动容器:

docker-compose up -d

创建容器四代网关协议代理适配器rulr-v4gw-adapter

1,线上平台Rulr服务_New_5 (121.199.1.127) 导出镜像
docker stop rulr-v4gw-adapter
docker save -o amazoncorretto.tar c1b6ba59135e
docker start rulr-v4gw-adapter
scp -P 53022 amazoncorretto.tar shuncomlog@shuncom.3322.org:/home/shuncomlog/

2,当前平台导入镜像
scp -P 53022 shuncomlog@shuncom.3322.org:/home/shuncomlog/amazoncorretto.tar ./
docker load -i amazoncorretto.tar
docker images #查看镜像的id
docker tag <镜像id> amazoncorretto:8u352-alpine3.16-tini

cat >> /home/shuncom/compose/.env << EOF
JAVA_IMAGE=amazoncorretto:8u352-alpine3.16-tini
EOF

vi /home/shuncom/compose/docker-compose.yml
:set paste   #粘贴文本不会乱格式

  # 四代网关协议代理适配器
  rulr-v4gw-adapter:
    container_name: rulr-v4gw-adapter
    image: ${JAVA_IMAGE}
    volumes:
      - /home/shuncom/servers/v4gw-adapter:/rulr/app
      - /home/shuncom/config/servers:/home/shuncom/config/servers
      - /home/shuncom/log:/home/shuncom/log
    ports:
      - "9011:9011"
    working_dir: /rulr/app
    command: java -Xms256m -Xmx512m -XX:MaxDirectMemorySize=128m -jar v4gw-adapter.jar --appMode=2
    restart: always
    networks:
      - rulr-network
    deploy:
      resources:
        limits:
          cpus: '1.4'
          memory: 1024M

cd /home/shuncom/compose
docker-compose up -d

 

解决Ubuntu服务器时间与本地时间不一致问题

在使用Ubuntu服务器时,常常会遇到系统时间与本地时间不一致的问题。这种时间差异可能导致日志时间错乱、调度任务执行异常等问题。本文将详细介绍如何在Ubuntu服务器中调整时间,使其与本地时间一致。

一、检查当前系统时间和时区
首先,您需要了解当前系统时间和时区设置。
查看当前系统时间
使用以下命令查看当前系统时间:
date​
解释:
date:显示当前的系统日期和时间。
查看当前时区设置
通过以下命令查看当前时区:
timedatectl​
解释:
timedatectl:显示系统时间和时区的详细信息,包括当前时间、UTC时间、本地时间以及时区。
输出示例:
Local time: Mon 2024-09-02 15:04:23 CSTUniversal time: Mon 2024-09-02 07:04:23 UTCRTC time: Mon 2024-09-02 07:04:23Time zone: Asia/Shanghai (CST, +0800)​
解释:
Local time:本地时间,即系统当前使用的时间。
Universal time:协调世界时(UTC)。
RTC time:硬件时钟时间。
Time zone:当前设置的时区。


二、设置正确的时区
若发现时区设置不正确,可以通过以下步骤调整时区。
列出可用时区
使用以下命令查看所有可用的时区:
timedatectl list-timezones​
解释:
list-timezones:列出系统中所有可用的时区。
设置正确的时区
假设要将时区设置为 Asia/Shanghai(中国标准时间),可以使用以下命令:
sudo timedatectl set-timezone Asia/Shanghai​
解释:
set-timezone Asia/Shanghai:将系统时区设置为 Asia/Shanghai。
设置完成后,可以再次使用 timedatectl命令确认时区是否正确。


三、同步系统时间
在设置正确时区后,确保系统时间与网络时间服务器同步。
安装NTP服务
使用 NTP(网络时间协议)来同步系统时间。首先安装NTP服务:
sudo apt updatesudo apt install -y ntp​
解释:
apt update:更新包列表。
apt install ntp:安装NTP服务。
启动并启用NTP服务
安装完成后,启动NTP服务并设置为开机自启:
sudo systemctl start ntpsudo systemctl enable ntp​
解释:
systemctl start ntp:启动NTP服务。
systemctl enable ntp:设置NTP服务为开机自启。
检查NTP同步状态
可以通过以下命令检查NTP的同步状态:
ntpq -p​
解释:
ntpq -p:显示NTP服务器的状态和同步情况。
输出示例:
     remote           refid      st t when poll reach   delay   offset  jitter==============================================================================*time.google.com  .GOOG.           1 u   42   64  377    24.7    -0.5   0.004​
解释:
remote:远程NTP服务器的地址。
refid:参考ID。
delay:与NTP服务器的通信延迟。
offset:本地时间与NTP服务器的时间差。
jitter:时间波动的程度。
带 *的行表示当前同步的NTP服务器。


四、调整硬件时钟
硬件时钟(RTC)可能与系统时间不同步,需要进行校准。
将系统时间写入硬件时钟
使用以下命令将系统时间写入硬件时钟:
sudo hwclock --systohc​
解释:
hwclock --systohc:将系统时间同步到硬件时钟。
设置硬件时钟为UTC时间
通常,硬件时钟设置为UTC时间是最佳实践,这样可以避免跨时区调整带来的问题:
sudo timedatectl set-local-rtc 0​
解释:
set-local-rtc 0:将硬件时钟设置为UTC时间。


五、验证时间同步状态
完成所有配置后,重新检查时间和时区设置,确保所有设置正确:
重新检查系统时间和时区
timedatectl​
验证NTP服务是否正常运行
sudo systemctl status ntp​
解释:
systemctl status ntp:查看NTP服务的运行状态,确保其正常运行。


原理与分析说明表
步骤
原理说明

查看当前时间和时区通过 timedatectl命令检查当前系统时间、UTC时间、硬件时钟时间和时区设置。
设置正确时区通过 timedatectl设置系统时区,使系统时间符合本地时区标准。
同步系统时间使用NTP服务同步系统时间,确保服务器时间准确无误。
调整硬件时钟将系统时间同步到硬件时钟,避免重启后时间不同步的问题。
验证同步状态确认NTP服务和时间同步状态,确保服务器时间与本地时间一致。

总结
通过本文的详细讲解,您可以确保Ubuntu服务器的时间与本地时间保持一致。首先检查并设置正确的时区,然后通过NTP服务同步系统时间,最后调整硬件时钟以确保时间同步无误。这些步骤能够有效解决由于时区或时间设置错误导致的服务器时间与本地时间不一致的问题,确保系统的稳定性和准确性。

docker-compose 导出导入容器教程

在Ubuntu 23.04上,如果你使用 docker-compose 创建了容器,并且希望将其导出并拷贝到另一台服务器上进行恢复,可以按照以下步骤进行操作:

在源服务器上导出容器和数据
1. 停止容器
首先,停止通过 docker-compose 创建的容器:
docker-compose down


2. 导出镜像
导出 docker-compose 中定义的所有镜像:

docker-compose config | awk '/image:/{print $2}' | xargs -I {} docker save -o {}.tar {}

这将为 docker-compose.yml 中定义的所有镜像创建 .tar 文件。

3. 导出数据卷(如果有使用数据卷)
如果容器使用了数据卷并且你想备份这些数据卷,可以使用以下命令:
首先,列出容器使用的数据卷:


docker volume ls

然后,导出特定的数据卷(例如 my_volume):
docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar czf /backup/my_volume.tar.gz -C /volume .


4. 打包为 tar.gz
将导出的镜像和数据卷一起打包为 tar.gz 文件:

tar czf docker_backup.tar.gz *.tar *.tar.gz
拷贝文件到目标服务器
将 docker_backup.tar.gz 文件拷贝到目标服务器,可以使用 scp 或其他文件传输工具。

scp docker_backup.tar.gz user@target_server:/path/to/destination

在目标服务器上恢复

1. 解压 tar.gz 文件
在目标服务器上解压 docker_backup.tar.gz 文件:

tar xzf docker_backup.tar.gz

2. 加载镜像
加载导出的Docker镜像:

for image in *.tar; do docker load -i $image; done

3. 还原数据卷(如果有备份数据卷)

还原数据卷:
docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar xzf /backup/my_volume.tar.gz -C /volume

4. 启动容器
确保 docker-compose.yml 文件已复制到目标服务器,然后启动容器:

docker-compose up -d

示例操作总结
在源服务器上:

停止容器:

docker-compose down
导出镜像:

docker-compose config | awk '/image:/{print $2}' | xargs -I {} docker save -o {}.tar {}

docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar czf /backup/my_volume.tar.gz -C /volume .
打包为 tar.gz:

tar czf docker_backup.tar.gz *.tar *.tar.gz
传输文件:

scp docker_backup.tar.gz user@target_server:/path/to/destination
在目标服务器上:

解压 tar.gz 文件:

tar xzf docker_backup.tar.gz
加载镜像:

for image in *.tar; do docker load -i $image; done
还原数据卷(可选):

docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar xzf /backup/my_volume.tar.gz -C /volume
启动容器:

docker-compose up -d
通过这些步骤,你可以成功地将 docker-compose 创建的容器从一台服务器导出并恢复到另一台服务器上

Docker/DockerHub 国内镜像源/加速列表(6月18日更新-长期维护)

链接地址:https://cloud.tencent.com/developer/article/2485043

前言

本列表自 2024 年维护以来,受到广大开发者热情欢迎,目前以帮助数十万开发者拉取docker镜像。许多曾经常用的国内镜像站(包括各种云服务商和高校镜像站)已经无法使用。因此,本人开始搜索并汇总了目前可用的镜像站和镜像加速地址,并定期测试它们的可用性,公益更新这个列表。

本列表为科研工作者提供 docker 镜像网站,网络不好的同学可以使用镜像,或者推荐给身边有需要的朋友使用这些 docker 镜像。

注意:本文仅供学术研究使用。⚠️长期更新,强烈建议收藏!

6 月 18 日确认可用:https://dev.xuanyuan.dev (该源需要登录,速度稳定,支持群晖nas,极空间nas等)

6 月 18 日确认可用:https://docker.xuanyuan.me

docker hub 镜像搜索功能:https://dockers.xuanyuan.me,方便大家搜索正确的 docker tags。

docker 中文配置文档:https://dockerdocs.xuanyuan.me

国内主流 Docker Hub 镜像加速站清单

地址

运营方

类型

说明

https://docker.xuanyuan.me

轩辕镜像免费版

Cloudflare+境内CDN

官网支持搜索镜像、配置简单、有会员解答群、屏蔽违法内容、境内公司运营(非常稳定)

https://dev.xuanyuan.dev

轩辕镜像会员版

Cloudflare+境内CDN

需要登录,速度稳定,支持爱快,群晖,极空间,威联通 nas,支持搜索镜像、配置简单、有会员解答群、屏蔽违法内容、境内公司运营(非常稳定)

https://mirror.ccs.tencentyun.com

腾讯云

境内CDN

仅腾讯云服务器内推荐使用

https://xxx.mirror.aliyuncs.com

阿里云

境内CDN

仅阿里云服务器内推荐使用(https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images?spm=a2c4g.11186623.0.i7)

使用教程

为了加速镜像拉取,使用以下命令设置 registry mirror

支持系统:Ubuntu 22.04+、Debian 10+、CentOS 8+

代码语言:javascript
代码运行次数:0
运行
AI代码解释
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.xuanyuan.me"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
使用DockerHub 代理,以下以 docker.xuanyuan.me 为例:可以根据列表自行替换
代码语言:javascript
代码运行次数:0
运行
AI代码解释
docker pull docker.xuanyuan.me/library/mysql:5.7

说明:library是一个特殊的命名空间,它代表的是官方镜像。如果是某个用户的镜像就把library替换为镜像的用户名。

Linux

运行以下命令进行配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
#!/bin/sh
cat <<-EOF > /etc/docker/daemon.json 
{
  "registry-mirrors": [
  	"https://docker.xuanyuan.me"
  	]
}
EOF
systemctl daemon-reload
systemctl restart docker

这适用于Ubuntu 22.04、Debian、CentOS 8、FedoraArch LinuxopenSUSE Leap 42.1等系统。

macOS(Docker For Mac)

对于macOS上的Docker For Mac用户,您可以通过以下步骤配置镜像加速服务:

1、点击桌面顶栏的docker图标,选择Preferences。

2、在 Daemon 标签下的 Registry mirrors 列表中加入以下镜像地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
https://docker.xuanyuan.me

3、点击Apply & Restart按钮使设置生效。

Windows(Docker For Windows)

Windows系统上的Docker For Windows用户可以按照以下步骤配置镜像加速服务:

  1. 在桌面右下角状态栏中右键docker图标,修改在Docker Daemon标签页中的json。
  2. 将以下地址加入"registry-mirrors"的数组里。https://docker.xuanyuan.me
  3. 点击Apply,重新生成Docker环境以使配置生效。

更多可用镜像

DockerHub镜像仓库

镜像加速器地址

镜像使用说明 657

https://dockerhub.icu(0913 测试不可用)

 

hub.rat.dev

 

docker.wanpeng.top

镜像使用说明 250

https://doublezonline.cloud

镜像使用说明 76

https://docker.mrxn.net(1102 测试不可用)

镜像使用说明 45

https://lynn520.xyz(1102 测试不可用)

镜像使用说明 30

https://ginger20240704.asia(1102 测试不可用)

DockerHub 镜像加速代理 102

https://docker.anyhub.us.kg(0831测试已不可用)

Dockerhub镜像加速说明 70

https://docker.wget.at(1102 测试不可用)

镜像使用说明 38

https://docker.awsl9527.cn(0913 测试不可用)

镜像使用说明 19

https://dislabaiot.xyz

Docker Proxy 镜像加速 92(来源地址 22)

https://dockerpull.com(1102 测试不可用)https://dockerproxy.cn(0913 新增)(1102 测试不可用)

Docker Hub Container Image Library 16

https://docker.fxxk.dedyn.io

docker-registry-mirrors 77: 支持 Docker Hub, GitHub, Google, k8s, Quay, Microsoft 等镜像仓库.

dhub.kubesre.xyz(0913 测试不可用)

AtomHub 可信镜像仓库平台 27(只包含基础镜像,共336个)

https://atomhub.openatom.cn

DaoCloud 镜像站 90

https://docker.m.daocloud.io

已失效DockerHub镜像仓库

 

Docker镜像加速站 1(因流量太大,作者已关停)

https://hub.uuuadc.top8(1102 测试不可用)

Docker镜像加速站

https://docker.ckyl.me4(1102 测试不可用)

镜像使用说明 3

https://docker.hpcloud.cloud 4(1102 测试不可用)

 

docker.1panel.live(1102 测试不可用)

 

https://dockerhub.jobcher.com 5(1102 测试不可用)

 

https://docker.chenby.cn 5(1102 测试不可用)

此列表只收录无需限定条件的DockerHub镜像源,感谢这些公益服务者。

Docker Compose 安装与使用教程请看:

Docker Compose 安装及使用教程

Dcoker Compose 模板文件详解

本文系转载,前往查看