服务器割接,我所学习到的内容。

这两天公司项目进行割接,需要将老的无缝替换到新的上面,但我犯了很多错误,所以特来记录一下。

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都是这样。

相关推荐
胡萝卜3.02 小时前
Linux包管理器:高效安装软件的秘诀
linux·运维·服务器·人工智能·linux包管理·yum教程·apt入门
I · T · LUCKYBOOM2 小时前
iptables 防火墙(二)
linux·运维·服务器·网络·安全·centos
sealaugh322 小时前
AI(学习笔记第十七课)langchain v1.0(SQL Agent)
人工智能·笔记·学习
山土成旧客2 小时前
【Python学习打卡-Day30】模块化编程:从“单兵作战”到“军团指挥”
开发语言·python·学习
带鱼吃猫2 小时前
Linux 守护进程:会话、终端与后台运行的底层逻辑
linux·运维·服务器
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [fs]iomap
linux·笔记·学习
两拆2 小时前
Linux(redhat7.9)安装KVM虚拟机
linux
Alex Cafu2 小时前
Linux网络编程2(HTTP 协议、IO 多路复用)
linux·c语言·网络·http
FOREVER-Q2 小时前
《Docker Compose 部署前后端分离项目实战:Nginx + Spring Boot(含完整踩坑记录)》
运维·docker·容器