11、数据存储

文章目录

存储服务

Redis是目前广泛使用的构建缓存服务的应用软件,当前使用的版本为3.2.12

布署应用

安装redis

sudo yum install redis

打开配置文件

sudo vim /etc/redis.conf

关闭ip绑定与保护模式,打开守护模式

#bind 127.0.0.1
protected-mode no
daemonize yes

设置开机自动启动

sudo chkconfig redis on

设置开机自动启动

sudo service redis start

参考

CentOS使用yum安装Redis的方法

Centos7下安装redis

redis-desktop-manager

布署监控

redis-stat

切换为ruby 2.5.1版本,下载并运行。官网

rbenv global 2.5.1
gem install redis-stat
~/.rbenv/versions/2.5.1/bin/redis-stat --server --auth=password 172.16.20.116:6379

访问http://IP:63790 即可

redmon

切换为ruby 2.5.1版本,下载并运行。官网

rbenv global 2.5.1
gem install redmon
~/.rbenv/versions/2.5.1/bin/redmon -r redis://:password@172.16.20.116:6379

访问http://IP:4567 即可

redis-monitor(LittlePeng)

切换为python 2.7.16,从官网下载源码

cd ~
mkdir redisMonitor
cd redisMonitor/
git clone git://github.com/LittlePeng/redis-monitor.git ./

打开并修改依赖文件,将redis的版本限制在3以下。否则会报运行时错误

ne requirements.txt
redis<3

打开并按需修改配置文件

cd ./src
ne redis_live.conf
{"master_slave_sms": "0,0",
 "RedisStatsServer": {"port": 6379, "server": "172.16.20.103"},
 "sms_alert": "192.168.110.207:9999",
 "DataStoreType": "redis",
  "RedisServers": [
  {"instance": "Master1", "group": "Test1", "port": 6379, "server": "172.16.20.103"},
  {"instance": "Slave1", "group": "Test1", "port": 6380, "server": "172.16.20.116", "password": "password"}
]}

最后启动数据采集服务与Web服务

python redis_monitor_daemon.py
python redis_live_daemon.py --port=8890

访问http://IP:8890/index.html 即可

redis-monitor(NetEaseGame)

切换为python 3.6.8版本,下载并运行。官网

pyenv global 3.6.8
pip install redis-monitor
redis-monitor init
redis-monitor start

访问http://IP:9527 即可。经测试,只能实现对本机redis服务监控。

参考

聊聊redis的监控工具

Redis-集群监控之Redis monitor

Grafana+Prometheus系统监控之Redis

Redis监控和告警

文件服务

平台采用FastDFS构建分布式文件系统

FastDFS

整体架构

在这里插入图片描述

安装FastDFS

准备编译环境

sudo yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

创建源代码目录

cd /tmp
mkdir fastdfs

安装libfatscommon

git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh
sudo ./make.sh install #编译安装

安装FastDFS

cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh
sudo ./make.sh install #编译安装

配置Tracker

创建存储目录,复制配置文件

sudo mkdir /opt/fastdfs_tracker
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
sudo ne /etc/fdfs/tracker.conf

修改如下配置

# 存储日志和数据的根目录
base_path=/opt/fastdfs_tracker
# 当报出java.lang.Exception: getStoreStorage fail, errno code: 28错误时,则可调整硬盘剩余容量参数。默认为10%
reserved_storage_sapce=3%

设置为开机自动启动,并启动服务

sudo chkconfig fdfs_trackerd on #自启动storage服务
sudo service fdfs_trackerd start #启动storage服务

配置Storage

创建存储目录,复制配置文件

sudo mkdir /opt/fastdfs_storage
sudo mkdir /opt/fastdfs_storage_data
sudo cp /tmp/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用
sudo cp /tmp/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
sudo ne /etc/fdfs/storage.conf

修改如下配置

base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=172.16.20.147:22122 #tracker 服务器的 IP地址和端口号

设置为开机自动启动,并启动服务

sudo chkconfig fdfs_storaged on #自启动storage服务
sudo service fdfs_storaged start #启动storage服务

安装Nginx

Nginx需与Storage安装在一台机上

cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包
tar -zxvf nginx-1.15.4.tar.gz #解压
cd nginx-1.15.4/
./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/src/ 
make
sudo make install

配置Nginx

复制模块配置文件

sudo cp /tmp/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
sudo ne /etc/fdfs/mod_fastdfs.conf

模块配置修改如下

#需要修改的内容如下
tracker_server=172.16.20.147:22122  #tracker服务器IP和端口
url_have_group_name=true
store_path0=/opt/fastdfs_storage_data

打开Nginx配置

sudo ne /usr/local/nginx/conf/nginx.conf

Nginx配置修改如下

#添加如下配置
server {
    listen       6001;    ## 该端口为storage.conf中的http.server_port相同
    server_name  localhost;
    location ~/group[0-9]/ {
    	ngx_fastdfs_module;
    }
}

设置系统服务

cd /usr/local/nginx/
sudo ne nginx

添加如下内容

#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0

设置开机自启动

sudo chmod +x nginx
sudo ln -s /usr/local/nginx/nginx /etc/rc.d/init.d/nginx
sudo chkconfig --add nginx
sudo chkconfig nginx on

启动服务

sudo service nginx start

文件读写

在pom.xml添加如下依赖

<dependency>
    <groupId>org.csource</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.27</version>
</dependency>

在resources文件夹下放置配置文件fastdfs-client.propertiesfastdfs.tracker_servers为必填项

#fastdfs.connect_timeout_in_seconds = 5
#fastdfs.network_timeout_in_seconds = 30
#fastdfs.charset = UTF-8
#fastdfs.http_anti_steal_token = false
#fastdfs.http_secret_key = FastDFS1234567890
#fastdfs.http_tracker_http_port = 80
fastdfs.tracker_servers = 172.16.20.147:22122

使用如下代码,即可完成文件上传

ClientGlobal.initByProperties("fastdfs-client.properties");

StorageClient client = new StorageClient(new TrackerClient().getConnection(), null);

String[] paths = client.upload_file("i:\\锅.gif", null, null);

Arrays.stream(paths).forEach(System.out::println);

最后,基于返回的地址(http://172.16.20.148:6001/group1/M00/00/01/rBAUlFyiUbuANWBDAAFklND3VYs523.jpg),访问已上传的图片。

参考

官网

用FastDFS一步步搭建文件管理系统

MongoDB

安装MongoDB

创建仓库

sudo ne /etc/yum.repos.d/mongodb-org-4.0.repo

复制如下内容

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

安装

sudo yum install -y mongodb-org

打开配置文件

sudo ne /etc/mongod.conf

修改绑定IP,使其它电脑也能访问本服务

net:
    bindIp: 0.0.0.0

启动

sudo service mongod start

参考

官方文档

MongoDb gridfs-ngnix文件存储方案

GridFS:基于MongoDB的分布式文件存储系统

Nginx

安装工具包

sudo yum -y install pcre-devel openssl-devel zlib-devel
sudo yum -y install gcc gcc-c++

下载源码并安装。注意,nginx-gridfs配合0.3版本的mongo-c-driver,才能通过编译。

cd /tmp
mkdir nginx
cd nginx
wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar zxvf nginx-1.6.3.tar.gz
wget https://github.com/mdirolf/nginx-gridfs/archive/v0.8.zip
unzip v0.8.zip
wget https://github.com/eagleas/mongo-c-driver/archive/v0.3.zip
unzip v0.3.zip
cp -rf ./mongo-c-driver-0.3/* ./nginx-gridfs-0.8/mongo-c-driver
cd nginx-1.6.3
./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --add-module=../nginx-gridfs-0.8/
make -j8
sudo make install -j8

打开配置文件

sudo ne /usr/local/nginx/conf/nginx.conf

修改监听端口与GridFS请求

http {

    server {
        listen       88;

        location /files/ {
            gridfs files
            field=filename
            type=string;
            mongo 127.0.0.1:27017;
        }
}

设置系统服务

cd /usr/local/nginx/
sudo ne nginx

添加如下内容,确保nginx晚于mongodb启动。

#!/bin/sh 
# 
# nginx - this script starts and stops the nginx daemon 
# 
# chkconfig:   - 85 15 
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#               proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /etc/nginx/nginx.conf 
# config:      /etc/sysconfig/nginx 
# pidfile:     /var/run/nginx.pid 

# Source function library. 
. /etc/rc.d/init.d/functions 

# Source networking configuration. 
. /etc/sysconfig/network 

# Check that networking is up. 
[ "$NETWORKING" = "no" ] && exit 0 

nginx="/usr/local/nginx/sbin/nginx" 
prog=$(basename $nginx) 

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" 

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 

lockfile=/var/lock/subsys/nginx 

start() { 
    [ -x $nginx ] || exit 5 
    [ -f $NGINX_CONF_FILE ] || exit 6 
    echo -n $"Starting $prog: " 
    daemon $nginx -c $NGINX_CONF_FILE 
    retval=$? 
    echo 
    [ $retval -eq 0 ] && touch $lockfile 
    return $retval 
} 

stop() { 
    echo -n $"Stopping $prog: " 
    killproc $prog -QUIT 
    retval=$? 
    echo 
    [ $retval -eq 0 ] && rm -f $lockfile 
    return $retval 
killall -9 nginx 
} 

restart() { 
    configtest || return $? 
    stop 
    sleep 1 
    start 
} 

reload() { 
    configtest || return $? 
    echo -n $"Reloading $prog: " 
    killproc $nginx -HUP 
RETVAL=$? 
    echo 
} 

force_reload() { 
    restart 
} 

configtest() { 
$nginx -t -c $NGINX_CONF_FILE 
} 

rh_status() { 
    status $prog 
} 

rh_status_q() { 
    rh_status >/dev/null 2>&1 
} 

case "$1" in 
    start) 
        rh_status_q && exit 0 
    $1 
        ;; 
    stop) 
        rh_status_q || exit 0 
        $1 
        ;; 
    restart|configtest) 
        $1 
        ;; 
    reload) 
        rh_status_q || exit 7 
        $1 
        ;; 
    force-reload) 
        force_reload 
        ;; 
    status) 
        rh_status 
        ;; 
    condrestart|try-restart) 
        rh_status_q || exit 0 
            ;; 
    *)    
      echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
        exit 2 

esac

设置开机自启动

sudo chmod +x nginx
sudo ln -s /usr/local/nginx/nginx /etc/rc.d/init.d/nginx
sudo chkconfig --add nginx
sudo chkconfig nginx on

启动服务

sudo service nginx start

参考

nginx-gridfs 的安装配置和使用

用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)

添加nginx为系统服务(service nginx start/stop/restart)

文件读写

使用Spring.Data.MongoDB完成文件读写。在pom.xml添加如下依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>1.10.18.RELEASE</version>
</dependency>
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.5.2</version>
</dependency>

Spring配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:context="http://www.springframework.org/schema/context" 
	xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
		http://www.springframework.org/schema/data/mongo
		http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">

	<!-- 扫描服务 -->
	<context:component-scan base-package="com.fsl"></context:component-scan>
	<mongo:db-factory id="mongoDbFactory" host="172.16.20.103" port="27017" dbname="files" />
	<mongo:mapping-converter id="converter" />
	<bean class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
		<constructor-arg ref="mongoDbFactory" />
		<constructor-arg ref="converter" />
	</bean>
</beans>

示例代码如下

public class FileAccess {

    @Autowired
    private GridFsTemplate template;

    public void SaveFile() {
        // 打开文件流
        try (InputStream inputStream = FileUtil.getInputStream("i:\\nginx-list.png")) {
            // 自定义文件元属性
            HashMap<String, String> map = new HashMap<>();
            map.put("metadata", "文件元属性");

            // 存储文件
            template.store(inputStream, "a.gif", map);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

上传成功后,访问http://ip:88/files/文件名 ,即可访问该文件。

参考

官方参考

vsftpd

vsftpd是目前广泛使用的构建ftp服务的应用软件,当前使用的版本为2.2.2

布署应用

安装vsftpd

sudo yum install vsftpd

打开配置文件

sudo vim /etc/vsftpd/vsftpd.conf

修改匿名根目录,禁用切换根目录

anon_root=/home/fslftp
chroot_local_user=YES

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。需添加如下配置

allow_writeable_chroot=YES

创建ftp专用用户

sudo useradd -s /sbin/nologin fslftp
sudo passwd fslftp

修改目录权限

sudo chmod +rx /home/fslftp

设置开机自动启动

sudo chkconfig vsftpd on

启动服务

sudo service vsftpd start

参考

CentOS7下FTP的安装与配置

CentOS搭建ftp服务器

html/#gridfs)

vsftpd

vsftpd是目前广泛使用的构建ftp服务的应用软件,当前使用的版本为2.2.2

布署应用

安装vsftpd

sudo yum install vsftpd

打开配置文件

sudo vim /etc/vsftpd/vsftpd.conf

修改匿名根目录,禁用切换根目录

anon_root=/home/fslftp
chroot_local_user=YES

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。需添加如下配置

allow_writeable_chroot=YES

创建ftp专用用户

sudo useradd -s /sbin/nologin fslftp
sudo passwd fslftp

修改目录权限

sudo chmod +rx /home/fslftp

设置开机自动启动

sudo chkconfig vsftpd on

启动服务

sudo service vsftpd start

参考

CentOS7下FTP的安装与配置

CentOS搭建ftp服务器

centos下开启ftp服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值