前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >电商详情页缓存架构(二)环境搭建(搭建CentOS 集群、安装redis及启动方案)

电商详情页缓存架构(二)环境搭建(搭建CentOS 集群、安装redis及启动方案)

作者头像
chenchenchen
发布2022-03-09 11:56:59
3930
发布2022-03-09 11:56:59
举报
文章被收录于专栏:chenchenchen

在虚拟机中安装 CentOS

1、virtual box 官网下载最新 (opens new window)(本次笔记使用的是 VirtualBox-6.0.4-128413-Win.exe),安装完成之后,需要先配置下虚拟电脑的默认位置:管理 -> 全局设定 -> 虚拟电脑位置

2、下载 CentOS 6.5 镜像,本次课程使用的是CentOS-6.5-i386-minimal.iso

3、创建虚拟机,打开 Virtual Box,点击“新建”按钮

  • 虚拟机名称:eshop-cache01
  • 类型:Linux
  • 版本:Red Hat(32-bit)
  • 内存大小:1024MB
  • 硬盘创建:选项默认(位置也默认,因为修改了全局的虚拟电脑位置,会默认在该位置下)

桥接模式配置:选择和物理机相同的网卡,且网段和物理机在同一网段即可

4、设置虚拟机网卡:选择创建好的虚拟机,点击“设置”按钮,在网络一栏中,连接方式中,选择“Bridged Adapter” 桥接网卡。

5、安装虚拟机中的 CentOS 6.5 操作系统

  • 选择创建好的虚拟机,点击启动
  • 选择启动盘:选择安装介质(即本地的 CentOS-6.5-i386-minimal.iso 文件)后启动
  • 选择第一项:Install or upgrade an existing system
  • Disc Found 弹窗中选择 Skip;(按键盘右侧的 Ctrl 键,鼠标从虚拟机中回到本地电脑 )
  • 图形界面选择 Next
  • 语言选择:默认语言 English -> U.S.English
  • 选择 Baisc Storage Devices -> Yes,discard any data(丢弃所有数据)
  • 主机名:eshop-cache01
  • 选择时区:Asia/Shanghai 亚洲/上海
  • 设置初始密码(root 账户的):hadoop/123456
  • Replace Existing Linux System -> Write changes to disk(格式化)
  • 安装完以后,CentOS 会提醒你要重启一下,选择 reboot 重启。

6、配置网络

重启完成之后,使用 账号密码登录系统,

检测外网:ping www.baidu.com

检测宿主机:ping 192.168.99.111 ip 是你笔记本的局域网 ip

会发现都 ping 不通,此时需要配置网络为静态地址

代码语言:javascript
复制
vi /etc/sysconfig/network-scripts/ifcfg-eth0

移动到要删除的行,连续按两下「d」删除几个默认的项目,文件内容最后保持如下内容

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp

按「i」键进入编辑模式,按esc退出,按:wq!保存并退出

使用 ifconfig 命令会发现没有 eth0 的信息
使用 service network restart 重启网络,如果失败了忽略继续执行

使用配置文件固定 ip 信息

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改为如下内容

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.99.170
NATMASK=255.255.255.0
GATEWAY=192.168.99.1

对于桥接网络模式来说:就是配置成和你宿主机同一个局域网即可

再次 service network restart 重启网络服务和 ifconfig 查看 ip 信息

7、配置 hosts

vi /etc/hosts 增加一行,可以通过 eshop-cache01 访问本机

代码语言:javascript
复制
192.168.99.170 eshop-cache01

8、配置 SecureCRT

使用界面化虚拟机管理软件, SecureCRT 、xshell、MobaXterm都可以。然后就可以从本机连接到虚拟机进行操作了

9、关闭防火墙

一些软件如集群之间需要打开固定的端口,防止连接不上,先关闭防火墙

代码语言:javascript
复制
service iptables stop
service ip6tables stop
chkconfig iptables off
chkconfig ip6tables off

还有一个策略需要关闭下(视频中没有解说是为什么这个是什么)

代码语言:javascript
复制
vi /etc/selinux/config

内容修改为

SELINUX=disabled

windows 上的防火墙也需要关闭,后面要搭建集群,有的大数据技术的集群之间,在本地你给了防火墙的话,可能会没有办法互相连接,会导致搭建失败

10、配置 yum 工具

代码语言:javascript
复制
yum clean all
# 生成缓存,安装的时候从缓存中查询相关数据,提高安装速度
yum makecache

11、安装 wget,可以通过该工具下载软件

代码语言:javascript
复制
yum install wget

在每个 CentOS 中都安装 Java 和 Perl

lrzsz 安装

lrzsz 工具可以上传下载文件操作。所以比较方便

代码语言:javascript
复制
yum -y install lrzsz

rz  # 弹出上传文件的选择框,选择你要上传的文件
sz 文件名 # 弹出下载保存文件框,把 虚拟机上的文件下载到本机

安装WinSCP,是在windows宿主机和linux虚拟机之间互相传递文件的一个工具

后面我们的软件都装在 /usr/local 中,使用 rm -rf ./* 清空该文件夹下的内容, 我看过该文件夹下的其他目录基本上都是空目录,所以放心删除

JDK 安装

本次使用jdk-7u65-linux-i586.rpm这个版本

代码语言:javascript
复制
# 1.将jdk-7u60-linux-i586.rpm通过WinSCP上传到虚拟机中 /usr/local 

# 2.安装 jdk
rpm -ivh jdk-7u65-linux-i586.rpm

# 3.删除安装包
rm -rf jdk-7u65-linux-i586.rpm

配置环境变量

代码语言:javascript
复制
vi ~/.bashrc

# 增加 java 环境变量
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME/bin

# 刷新环境变量
source ~/.bashrc

# 检查是否安装成功
java -version

rpm 自动安装后的环境变量问题

通过 rpm 安装之后,可以通过以下方式查找生效的命令路径,通过以下命令查找之后,发现最终指向了 jre/bin/java; 也就是说不是通过环境变量,而是直接是软连方式

代码语言:javascript
复制
[root@eshop-detail01 local]# which java
/usr/bin/java
[root@eshop-detail01 local]# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Jul 15 23:09 /usr/bin/java -> /etc/alternatives/java
[root@eshop-detail01 local]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 40 Jul 15 23:09 /etc/alternatives/java -> /usr/java/jdk1.8.0_202-i586/jre/bin/java

安装 Perl

perl:是一个基础的编程语言的安装,如同 java 一样

为什么要装 perl?对于大型电商网站的详情页系统来说是很复杂的。nginx+lua 的时候就需要依赖 perl

代码语言:javascript
复制
# 1.先安装 gcc
yum install -y gcc

# 2.下载 per
wget http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz

# 3.解压
tar -xzf perl-5.16.1.tar.gz

# 4.添加配置。记得,我们都在 /usr/local 中操作
cd perl-5.16.1
./Configure -des -Dprefix=/usr/local/perl

# 5.安装。该命令耗时很长,只能等着
make && make test && make install

# 6.检查是否安装成功
perl -v

在 4 个虚拟机中安装 CentOS 集群

按照上述步骤,再安装三台一模一样环境的linux机器

机器分布

hostName

ip

eshop-cache01

192.168.99.170

eshop-cache02

192.168.99.171

eshop-cache03

192.168.99.172

eshop-cache04

192.168.99.173

也可以选择使用 VirtualBox 的复制功能来完成其他 3 台机器的安装。(复制需要先关闭被复制的机器)

接下来修改每台机器的配置 2、另外三台机器的hostname分别设置为eshop-cache02,eshop-cache03,eshop-cache04 3、安装好之后,在每台机器的hosts文件里面,配置好所有的机器的ip地址到hostname的映射关系

对于复制的机器网络服务启动不起来,也就是使用 service network restart 命令失败出现该错误 device eth0 does not seem to be present,delaying initializationvim

解决方案:

如图,修改 vi /etc/udev/rules.d/70-persistent-net.rules 中的内容与桥接网卡的 mac 地址一致即可

配置 4 台 CentOS 为 ssh 免密码互相通信

代码语言:javascript
复制
# 生成秘钥,命令中一直回车即可
ssh-keygen -t rsa
# 进入秘钥文件目录
cd /root/.ssh/
# 让自己本机使用 ssh 免密,把 pub 中的内容复制到 authorized_keys 文件中
cp id_rsa.pub authorized_keys
# 可使用 ssh 命令连接本机 hostname,提示输入 yes 即可登录
ssh eshop-cache01
# 退出 ssh 登录的终端
exit

把自己的公钥 copy 到要指定机器的 authorized_keys 文件中, 也就是说,你想要免密登录那一台机器就把自己的公钥写入 authorized_keys 文件夹中

代码语言:javascript
复制
# 命令语法如下,在执行该命令的时候需要输入指定机器的密码
ssh-copy-id -i hostname

# 比如
ssh-copy-id -i eshop-cache01
ssh-copy-id -i eshop-cache02
ssh-copy-id -i eshop-cache03
ssh-copy-id -i eshop-cache04

一个小技巧,其他三台机器都使用 ssh-copy-id -i eshop-cache01 把公钥集中到一台机器上,这样 authorized_keys 中的文件内容就包含了 4 台机器的公钥,这个时候只需要把该文件内容 copy 到其他 3 台机器覆盖即可,可以使用如下命令来复制

在 eshop-cache01 上

代码语言:javascript
复制
cd /root/.ssh
scp authorized_keys eshop-cache02:/root/.ssh
scp authorized_keys eshop-cache03:/root/.ssh
scp authorized_keys eshop-cache04:/root/.ssh

参考

虚拟机(virtualBox)下redhat7.2桥接网络设置:https://www.cnblogs.com/xiaohaier/p/7544152.html

VirtualBox虚拟机配置CentOS7网络图文详解教程:https://www.linuxidc.com/linux/2017-01/139345.htm

Virtualbox的centos7 nat和桥接网络配置:https://www.centos.bz/2017/08/virtualbox-centos7-nat-bridge/

https://zq99299.github.io/note-book/cache-pdp/006.html#%E5%9C%A8%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%AD%E5%AE%89%E8%A3%85-centos

安装单机版 redis

TIP:都在 /usr/local 目录中安装和下载软件。有的会自动安装到目录。 有一部分就是我们手工安装到该目录下的

官网下载,安装依赖 tcl,如果先安装 redis 的话,会报错,所以需要安装一下 tcl

代码语言:javascript
复制
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd  /usr/local/tcl8.6.1/unix/
./configure  
make && make install

安装 redis

代码语言:javascript
复制
使用 redis-3.2.8.tar.gz(截止 2017 年 4 月的最新稳定版)
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install

在等待很长时间后,最后有一个错误信息,提示日志打印失败

代码语言:javascript
复制
!!! WARNING The following tests failed:

*** [err]: Server is able to generate a stack trace on selected systems in tests/integration/logging.tcl
expected stack trace not found into log file
*** [err]: Test replication partial resync: no backlog (diskless: yes, reconnect: 1) in tests/integration/replication-psync.tcl
Expected condition '[s -1 sync_partial_err] > 0' to be true ([s -1 sync_partial_err] > 0)
Cleanup: may take some time... OK
make[1]: *** [test] Error 1
make[1]: Leaving directory `/usr/local/redis-3.2.8/src'
make: *** [test] Error 2

由于这里的命令是 && 连接的,所以后面的 make install 没有被执行。再单独执行 make install

代码语言:javascript
复制
[root@eshop-cache01 redis-3.2.8]# make install
cd src && make install
make[1]: Entering directory `/usr/local/redis-3.2.8/src'
Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory /usr/local/redis-3.2.8/src

安装还是会出现提示说 test 没有通过,但是这里是一个 Hint(提示),经过后面启动方案测试后,可以正常启动

redis 的生产环境启动方案

本地可以用 redis-server 启动一下 redis,做一些测试

在生产环境是要把 redis 作为一个系统的 daemon 进程去运行的,每次系统启动, redis 进程一起启动

1、将redis/utils 目录下 redis_init_script 脚本,拷贝到 /etc/init.d 目录中,并重命名为redis_6379

代码语言:javascript
复制
cp redis_init_script /etc/init.d/
cd /etc/init.d/
mv redis_init_script redis_6379

6379是我们希望这个redis实例监听的端口号,也是 redis 的默认端口号

vi redis_6379可以看到脚本的第6行的REDISPORT,端口号就是6379

2、创建两个目录:

代码语言:javascript
复制
mkdir /etc/redis
mkdir /var/redis/
mkdir /var/redis/6379
  • /etc/redis(存放 redis 的配置文件)
  • /var/redis/6379(存放 redis 的持久化文件)
  • /var/run/redis_6379.pid(存放redis的pid文件位置)

3、修改 redis 配置文件 redis.conf

该文件默认在 redis 安装目录下,拷贝到 /etc/redis 目录中,修改名称为 6379.conf

代码语言:javascript
复制
cp /usr/local/redis-3.2.8/redis.conf /etc/redis/
cd /etc/redis/
mv redis.conf 6379.conf

为什么要这样修改呢?是因为 redis_init_script 脚本中的 conf 配置指定了该目录下的 端口号.conf 文件

代码语言:javascript
复制
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

4、修改 redis.conf(6379.conf) 中的部分配置为生产环境

建议在 windows 下使用文本编辑器搜索修改后在上传覆盖

代码语言:javascript
复制
daemonize	yes						// 让redis以daemon后台守护进程运行
pidfile /var/run/redis_6379.pid     // 设置redis的pid文件位置
port  6379						    // 设置 redis的监听端口号
dir /var/redis/6379				    //设置持久化文件的存储位置

5、启动 redis

代码语言:javascript
复制
# 执行 redis_6379 脚本
cd /etc/init.d
# 如果没有执行权限的话,修改执行权限 ,可以使用 chmod u+x redis_6379
# chmod 777 redis_6379
./redis_6379 start

6、确认 redis 进程是否启动,ps -ef | grep redis

7、让 redis 跟随系统启动自动启动

代码语言:javascript
复制
使用 chkconfig 命令开启该文件的系统服务,
可以在 redis_6379 配置文件中上面添加  chkconfig 的注释信息
如下,不要在 #!/bin/sh 上面添加
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database

8、添加完成之后,使用以下命令开启随系统启动

代码语言:javascript
复制
chkconfig redis_6379 on

有关 chkconfig 命令的更多信息 (opens new window)参考百度

redis cli的使用

1、停止本机的 6379 端口的 redis 进程

代码语言:javascript
复制
redis-cli shutdown

2、关闭指定机器的 redis,不加 shutdown 命令的话就是登陆到 cli

代码语言:javascript
复制
redis-cli -h 127.0.0.1 -p 6379 shutdown

3、ping redis 的端口,看是否正常

代码语言:javascript
复制
redis-cli PING

4、默认连接本机 6379 的redis

代码语言:javascript
复制
redis-cli

5、在 cli 中可以使用 redis 的命令,下面使用最贱的 set 和 get 命令测试

代码语言:javascript
复制
SET k1 v1
GET k1

小结

redis 的技术包括 4 块:

1、redis各种数据结构和命令的使用,包括 java api 的使用

2、针对特殊业务场景,redis作为解决方案的使用,pub/sub 消息系统、分布式锁、输入的自动完成,等等

3、日常的管理相关的命令

4、企业级的集群部署和架构

我们将从redis搭建,到深入集群架构的底层原理,讲解 redis 持久化、主从架构、复制原理、集群架构、数据分布式存储原理、哨兵原理、高可用架构,了解 redis 如何去支撑海量数据、高并发、高可用的

参考:

https://zq99299.github.io/note-book/cache-pdp/redis/007.html#%E5%AE%89%E8%A3%85%E5%8D%95%E6%9C%BA%E7%89%88-redis

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在虚拟机中安装 CentOS
  • 在每个 CentOS 中都安装 Java 和 Perl
    • lrzsz 安装
      • JDK 安装
        • rpm 自动安装后的环境变量问题
          • 安装 Perl
          • 在 4 个虚拟机中安装 CentOS 集群
          • 配置 4 台 CentOS 为 ssh 免密码互相通信
          • 安装单机版 redis
          • redis 的生产环境启动方案
          • redis cli的使用
          • 小结
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档