这两天公司项目进行割接,需要将老的无缝替换到新的上面,但我犯了很多错误,所以特来记录一下。
1.配置环境
首先需要将新服务器配置上运行环境,nginx、redis、mysql、java、minio、rabbitmq等等。
redis
首先下载安装包,然后将安装包上传到你的服务器上。
通过下列命令安装redis所需要的gcc环境依赖。
shell
yum install -y gcc tcl
``
然后解压你的安装包
shell
tar -xzf redis-6.2.6.tar.gz
进入你的解压文件夹里,并且执行make编译
shell
cd redis-6.2.6
make && make install
之后进行redis的文件配置
shell
vim redis.conf

找到这几个位置,修改成你想要的内容,然后wq保存就好,记住要配置为后台运行

之后运行redis就好
shell
redis-server redis.conf
你还可以将redis做成服务。

将下面这个内容封装成redis.service ,放到 /etc/systemd/system/ 下面。
shell
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
ExecStart=/app/redis-6.2.13/src/redis-server /app/redis-6.2.13/redis.conf
ExecStop=/app/redis-6.2.13/src/redis-cli shutdown
User=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.target
然后运行重载命令,刷新识别。
shell
sudo systemctl daemon-reload
然后你就可以使用下面的命令了。
shell
systemctl status redis
systemctl restart redis
systemctl start redis
systemctl stop redis

mysql
跟redis同理,下载安装包,执行make编译。
先下载安装包,我这些都是内网操作,如果你的服务器可以直接访问外网,可以直接通过命令行下载。
shell
rpm -qa | grep mysql
解压缩
shell
tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz #解压缩
创建mysql用户组
shell
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
创建数据目录、并且进行授权
shell
mkdir data
chown mysql:mysql data
chmod 750 data
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/mysql/data/ --user=mysql --initialize
使用 --initialize 或 --initialize-insecure 选项,具体取决于您是否希望服务器为 'root'@'localhost' 帐户生成一个随机初始密码,或者创建该帐户时没有密码

my.cnf需要自己配置
shell
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql #初始地址
datadir=/data/mysql #数据地址
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err #log
pid-file=/data/mysql/mysql.pid #pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
然后你就可以通过命令systemctl进行mysql的操作了。
系统自动创建了service管理,不过这里有一点不一样的是他的版本比较老,所以创建在了init.d中,而systemd映射了他。

然后服务就起来了,你可以通过ssh命令进行穿透,然后将老数据进行迁移。
shell
mysql -uroot -p

nginx
先下载nginx的依赖环境
shell
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载压缩包,然后解压
shell
tar -zxf nginx-1.25.1.tar.gz
解压成功之后,进入nginx目录,运行可执行文件 --prefix选择编译目录
shell
cd nginx-1.25.1
sudo ./configure --prefix=/app/nginx

上图出现,表示配置成功,之后执行编译和安装就行了。
shell
make && make install
./app/sbin/nginx -v
之后需要什么,在conf的nginx.conf进行配置就行。
minio
安装minio二进制文件,配置minio.conf
shell
MINIO_VOLUMES="/app/data"
MINIO_OPTS="--address 0.0.0.0:9000 --console-address 0.0.0.0:9001"
MINIO_ACCESS_KEY="minioadmin"
MINIO_SECRET_KEY="minioadmin"
将minio设置为systemctl
shell
#minio.service文件内容
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
#minio文件具体位置
AssertFileIsExecutable=/usr/local/minio/minio
[Service]
#User and group 用户 组
User=root
Group=root
#创建的配置文件 minio.conf
EnvironmentFile=/usr/local/minio/conf/minio.conf
ExecStart=/usr/local/minio/minio server $MINIO_OPTS $MINIO_VOLUMES
#Let systemd restart this service always
Restart=always
#Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
#Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
依然是通过systemctl方法进行minio的操作
shell
#将服务设置为每次开机启动
systemctl enable minio.service
#重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载
systemctl daemon-reload
#启动服务
systemctl start minio
#停止服务
systemctl stop minio
#重启服务
systemctl restrat minio
#查看服务状态
systemctl status minio.service
#打开页面访问登录成功即可
http://192.168.80.137:9000
java
通过官网下载java。

通过rpm命令进行安装
shell
sudo rpm -ivh jdk-8u391-linux-x64.rpm
#或
sudo yum localinstall jdk-8u391-linux-x64.rpm

也就是会自动生成软连接,不需要用户再去配置java_home了。
你像我们刚才上面的那些环境配置,都是手动配置

以后直接全部下载RPM进行安装,打包者提供了配置。
迁移数据
服务就是换ip,打包
数据就通过navicat批量导入就好,不过要看看哪些表内容比较多,分批次导入。
minio就通过minio官方给我们提供的minio client进行导入就行:
步骤 1:安装 MinIO 客户端
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc
chmod +x /usr/local/bin/mc
步骤 2:设置源和目标服务器别名
java
mc alias set minio_src http://源服务器IP:9000 用户名 密码
mc alias set minio_dest http://目标服务器IP:9000 用户名 密码
步骤 3:执行数据迁移
迁移指定桶的数据:
shell
mc cp --recursive minio_src/桶名/ minio_dest/桶名/
#迁移所有数据:
mc cp --recursive minio_src/ minio_dest/
一次性同步所有数据:
shell
mc mirror --preserve minio_src/ minio_dest/
实时监控并同步:
mc mirror --watch minio_src/ minio_dest/
使用以下命令对比源和目标的数据差异:
shell
mc diff minio_src/ minio_dest/
网络策略
因为都是内网,所以我将一个前台服务器开了外网,通过nginx转发,让剩下的内网服务器可以访问外网资源,所以要配置nginx.conf,
并且需要配置该服务器的DNS解析,使得可以解析域名。
配置DNS
比较临时的方法就是直接改resolv.conf,在 /etc/resolv.confs里。
shell
#在里面加入你需要的域名解析
nameserver 8.8.8.8
nameserver 114.114.114.114
如果你的服务器安装了NetworkManager的话,也可以使用NetworkManager进行统一管理。
shell
#查看连接名
nmcli connection show
#修改 DNS(替换 "Wired connection 1" 为你的连接名)
sudo nmcli con mod "Wired connection 1" ipv4.dns "223.5.5.5 223.6.6.6"
sudo nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes # 忽略 DHCP 的 DNS
sudo nmcli con up "Wired connection 1"
shell
#设置主备 DNS
sudo nmcli con mod "eth0" ipv4.dns "223.5.5.5 223.6.6.6"
#关闭自动获取 DNS(防止 DHCP 覆盖)
sudo nmcli con mod "eth0" ipv4.ignore-auto-dns yes
#重新激活连接
sudo nmcli con up "eth0"
然后是各个服务器之间要相互能ping通。
防火墙设置端口访问
而各个服务器要能访问其他服务器所运行的服务端口,需要在防火墙里面进行设置。
使用iptables命令
java
#添加126这个服务器可以访问本机的9000端口
iptables -A INPUT -p tcp -s 134.96.246.126 --dport 9000 -j ACCEPT
查看端口命令
shell
iptables -S INPUT | grep "\-\-dport 9000"
将你所需要的端口给你设置的ip启动,在你所设置的ip服务器上使用
shell
#我现在登录的是126,要访问127是否能通
telnet 134.96.246.127 9000
如果返回connected,证明可以访问通过,就配置成功了。
mysql的3306,redis的6379,minio的9000,rabbitMQ的15672都是这样。