centos cluster,centos 8
CentOS下SWAP分区建立及释放内存详解
方法一:
一、查看系统当前的分区情况:
free-m
二、创建用于交换分区的文件:
dd if=/dev/zero of=/whatever/swap bs=block_size(10M)count=number_of_block(3000)
三、设置交换分区文件:
mkswap/export/swap/swapfile
四、立即启用交换分区文件:
swapon/whateever/swap
五、若要想使开机时自启用,则需修改文件/etc/fstab中的swap行:
/whatever/swap swap swap defaults 0 0
方法二
增加交换分区空间的方法:
1.查看一下/etc/fstab确定目前的分区
2.swapoff/dev/hd**
3.free看一下是不是停了.
4.fdisk删了停掉的swap分区
5.重新用FDISK建一个新的SWAP分区
6.mkswap/dev/hd**把新的分区做成swap
7.swapon/dev/hd**打开swap
8.修改/etc/fstab
操作实例:
1.查看系统Swap空间使用
# free
total used free shared buffers cached
Mem: 513980 493640 20340 0 143808 271780
-/+ buffers/cache: 78052 435928
Swap: 1052248 21256 1030992
2.在空间合适处创建swap文件
# mkdir swap
# cd swap
# dd if=/dev/zero of=swapfile bs=1024 count=10000
10000+0 records in
10000+0 records out
# ls-al
total 10024
drwxr-xr-x 2 root root 4096 7月 28 14:58.
drwxr-xr-x 19 root root 4096 7月 28 14:57..
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
# mkswap swapfile
Setting up swapspace version 1, size= 9996 KiB
3.激活swap文件
# swapon swapfile
# ls-l
total 10016
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
# free
total used free shared buffers cached
Mem: 513980 505052 8928 0 143900 282288
-/+ buffers/cache: 78864 435116
Swap: 1062240 21256 1040984
生成1G的文件
# dd if=/dev/zero of=swapfile bs=10M count=3000
创建为swap文件
#mkswap swapfile
让swap生效
#swapon swapfile
查看一下swap
#swapon-s
[root@cluster/]# swapon-sFilenameTypeSizeUsedPriority/dev/sda3 partition10201161728-1/state/partition1/swap/swapfile file307199920-2
加到fstab文件中让系统引导时自动启动
#vi/etc/fstab
/state/partition1/swap/swapfil swap swap defaults 0 0
完毕。
二,LINUX释放内存
细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题.
先来说说free命令
[root@cluster/]# free-m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
其中:
total内存总数
used已经使用的内存数
free空闲的内存数
shared多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache磁盘缓存的大小
-buffers/cache的内存数:used- buffers- cached
+buffers/cache的内存数:free+ buffers+ cached
可用的memory=free memory+buffers+cached
有了这个基础后,可以得知,我现在used为163MB,free为86,buffer和cached分别为10,94
那么我们来看看,如果我执行复制文件,内存会发生什么变化.
[root@cluster/]# cp-r/etc~/test/
[root@cluster/]# free-m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐都被cached吃掉了.别紧张,这是为了提高文件读取效率的做法.
引用[url][/url]为了提高磁盘存取效率, Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
那么有人说过段时间,linux会自动释放掉所用的内存,我们使用free再来试试,看看是否有释放?
[root@cluster/]# free-m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
MS没有任何变化,那么我能否手动释放掉这些内存呢???回答是可以的!
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存.操作如下:
[root@cluster/]# cat/proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默认为0
[root@cluster/]# sync
手动执行sync命令(描述:sync命令运行 sync子例程。如果必须停止系统,则运行 sync命令以确保文件系统的完整性。sync命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O和读写映射文件)
[root@server test]# echo 3/proc/sys/vm/drop_caches
[root@server test]# cat/proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3
[root@server test]# free-m
total used free shared buffers cached
Mem: 249 66 182 0 0 11
-/+ buffers/cache: 55 194
Swap: 511 0 511
再来运行free命令,发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB.那么有效的释放了buffer和cache.
有关/proc/sys/vm/drop_caches的用法在下面进行了说明
/proc/sys/vm/drop_caches(since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1/proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2/proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects
这几天发现linux系统内存一直涨,即使把apache和mysql关闭了,内存也不释放,可以使用以下脚本来释放内存:
脚本内容:
#!/bin/sh
# cache释放:
# To free pagecache:
/bin/sync
/bin/sync
#echo 1/proc/sys/vm/drop_caches
# To free dentries and inodes:
#echo 2/proc/sys/vm/drop_caches
# To free pagecache, dentries and inodes:
echo 3/proc/sys/vm/drop_caches
利用系统crontab实现每天自动运行:
crontab-e
输入以下内容:
00 00***/root/Cached.sh
每天0点释放一次内存,这个时间可以根据自己需要修改设置
在运行./Cached.sh时如果提示错误:Permission denied权限的问题,可以运行
Centos7.x Redis6.2.5 Cluster搭建
官方地址:
前提条件:
Redis Cluster不使用一致性哈希,而是使用不同形式的分片每个键在概念上都是我们所谓的哈希槽的一部分。
Redis Cluster有 16384个哈希槽,计算哈希值是多少给定密钥的插槽,我们只需取密钥的 CRC16模 16384。
Redis集群中的每个节点都负责哈希槽的一个子集,例如,您可能有一个包含 3个节点的集群,其中:
节点 A包含从 0到 5500的哈希槽。
节点 B包含从 5501到 11000的哈希槽。
节点 C包含从 11001到 16383的哈希槽。
如果报错 ERR This instance has cluster support disabled的话,说明集群未开启。
本例子是在一台服务器上面做的实验,只是创建了6个目录,启了6个redis-server而已。
创建一个 redis.conf每个目录中的文件,从 7000到 7005。作为配置文件的模板,只需使用上面的小示例,但一定要更换端口号 7000使用正确的端口号根据目录名。
通过 ps aux|grep redis查看redis的启动情况。
如果不想通过配置和执行来创建Redis集群如上所述,手动单个实例,有一个更简单的系统(但您不会了解相同数量的操作细节)。
只需检查 utils/create-clusterRedis发行版中的目录。有一个脚本叫做 create-cluster里面(与目录同名它包含在)中,它是一个简单的 bash脚本。为了开始一个有 3个主节点和 3个从节点的 6节点集群只需输入以下内容命令:
回复 yes在第 2步中,当 redis-cli实用程序要你接受集群布局。
您现在可以与集群交互,第一个节点将从端口 30001开始默认情况下。完成后,使用以下命令停止集群:
请阅读 README在此目录中以获取有关如何操作的更多信息运行脚本。
create-cluster.sh
集群信息
集群节点
我上面的例子我们可以看出,设置的key会被分配到不同的实例去。
现在很多的sdk都支持move,例如:phpredis。
我们先查看下当前的集群情况。
目前 7000, 7001, 7002是 master角色, 7003, 7004, 7005是 slave角色。
然后我们将 7001这个端口的redis服务的进程杀掉。
7004.log日志,发现 7001主挂了,然后将自己升级为master。
查询当前的集群状态如下:
我们可以看出, 7004升级了 master, 7001是 fail状态。
启动 7001的redis服务。
7001.log中可以发现,自己变成了 slave。
此时我们再来看下集群情况:
目前 7000, 7002, 7004是 master角色, 7001, 7003, 7005是 slave角色,自动进行了故障切换。
如果配置了 requirepass的话, masterauth必须需要配置,不然 master与 slave不能自动切换。
修改配置文件 redis.conf中的 cluster-enabled参数的值为 yes并把参数前#去除,重启Redis服务器。
在命令尾部追加 2>/dev/null即可。
我们继续在 cluster-test目录下,创建 7006目录,配置和之前的一样,不同就是端口以及日志路径,然后启动服务即可。
看下最新的集群情况
添加一个 7006的从节点。
在 cluster-test目录下,创建 7007目录,配置和之前的一样,不同就是端口以及日志路径,然后启动服务即可。
看下最新的集群情况
从上面集群情况可以看出了问题,新增加的 7006, 7007的虽然增加到了集群里面,但是没有分配slot。
分配后的集群情况
缩容前:
将 7006的slot给了 7000。
缩容后:
删除了 7006, 7007后的集群情况
如何在CentOS 7上安装Apache Cassandra
首先要安装好java,并配置好java环境。现在通过创建一个新的存储库文件将Apache Cassandra存储库添加到您的存储库列表中。
nano/etc/yum.repos.d/cassandra.repo
现在将以下内容添加到文件中。
[cassandra]
name=Apache Cassandra
baseurl=
gpgcheck=1
repo_gpgcheck=1
gpgkey=
您现在可以通过运行以下命令安装Apache Cassandra。
yum-y install cassandra
通过运行以下命令重新加载系统守护程序:
systemctl daemon-reload
你现在可以通过键入来启动Cassandra
systemctl start cassandra
要启用Cassandra在启动时自动启动,请运行:
systemctl enable cassandra
您可以通过键入以下命令来验证Cassandra是否正在运行。
nodetool status
如果Cassandra正在运行,您应该看到类似的输出。
[root@ip-172-31-7-136~]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns(effective) Host ID Rack
UN 127.0.0.1 136.29 KiB 256 100.0% b3d26649-9e10-4bee-9b3c-8e81c4394b2e rack1
如果不是显示上面的输出,而是得到类似于以下输出的内容,那么您将需要配置cassandra环境配置文件。
nodetool: Failed to connect to'127.0.0.1:7199'- ConnectException:'Connection refused(Connection refused)'.
使用以下命令打开配置文件。
nano/etc/cassandra/default.conf/cassandra-env.sh
现在在配置中找到以下一行。
# JVM_OPTS="$JVM_OPTS-Djava.rmi.server.hostname=<public name>"
取消注释行并将其值形式<public_name>更改为localhost IP地址127.0.0.1。
配置应如下所示。
JVM_OPTS="$JVM_OPTS-Djava.rmi.server.hostname=127.0.0.1"
保存文件并从编辑器退出,通过运行以下命令重新启动Apache Cassandra。
systemctl restart cassandra
运行nodetool命令时应该具有所需的输出。
Cassandra带有一个强大的命令行shell cqlsh来在Cluster上运行查询。查询是用CQL或Cassandra Query语言编写的。要访问CQL shell,请运行以下命令。
cqlsh
您将看到以下输出。
[root@www.linuxidc.com~]# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1| Cassandra 3.11.0| CQL spec 3.4.4| Native protocol v4]
Use HELP for help.