【server1】
1.在server1配置主节点:
[root@server1 ~]# tar zxf redis-4.0.8.tar.gz
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@server1 redis-4.0.8]# yum install -y gcc
2.进行安装包原码编译:
[root@server1 redis-4.0.8]# make && make install 编译与安装
[root@server1 redis-4.0.8]# which redis-cli 查看默认目录
/usr/local/bin/redis-cli
[root@server1 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@server1 redis-4.0.8]# cd utils/
[root@server1 utils]# ./install_server.sh 调用脚本直接回车即可完成配置
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!
3.配置服务接口:
[root@server1 utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
[root@server1 utils]# /etc/init.d/redis_6379 stop
[root@server1 utils]# /etc/init.d/redis_6379 start
【server2】
[root@server2 utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
加入 282 slaveof 172.25.39.1 6379
[root@server2 utils]# /etc/init.d/redis_6379 restart
【server1】查看
[root@server1 ~]# redis-cli
127.0.0.1:6379> set name westos
OK
【server3】
[root@server3 utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
加入 282 slaveof 172.25.39.1 6379
[root@server3 utils]# /etc/init.d/redis_6379 restart
[root@server3 utils]# cd
[root@server3 ~]# redis-cli
127.0.0.1:6379> get name
"westos"
可以看到在server3上也可以看到server1同步的信息。
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# cp sentinel.conf /etc/redis/
[root@server1 redis-4.0.8]# cd /etc/redis/
[root@server1 redis]# vim sentinel.conf
15 bind 0.0.0.0
16 protected-mode no
68 sentinel monitor mymaster 172.25.39.1 6379 2
97 sentinel down-after-milliseconds mymaster 10000
[root@server1 redis]# scp sentinel.conf server2:/etc/redis
[root@server1 redis]# scp sentinel.conf server3:/etc/redis
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel #监控
再次连接一个server1,将server1关闭
[root@server1 redis]# redis-cli
127.0.0.1:6379> shutdown
not connected> quit
监控server1
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel #监控
【server3】上查看master是否有跳转
[root@server3 ~]# redis-cli
127.0.0.1:6379> info
【server1】【server2】关闭服务,【server2】转换为master端
1.【server1】配置环境
[root@server1 ~]# mkdir cluster
[root@server1 ~]# cd cluster/
[root@server1 cluster]# mkdir 7001
[root@server1 cluster]# mkdir 7002
[root@server1 cluster]# mkdir 7003
[root@server1 cluster]# mkdir 7004
[root@server1 cluster]# mkdir 7005
[root@server1 cluster]# mkdir 7006
[root@server1 cluster]# cd 7001/
[root@server1 7001]# vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@server1 redis-4.0.8]# cd src/
[root@server1 src]# cp redis-trib.rb /usr/local/bin
2.安装服务包,解决依赖性:
[root@server1 ~]# ls
anaconda-ks.cfg install.log.syslog redis-4.0.8
cluster libyaml-0.1.3-4.el6_6.x86_64.rpm redis-4.0.8.tar.gz
install.log redis-4.0.1.gem ruby-2.2.3-1.el6.x86_64.rpm
[root@server1 ~]# yum install -y libyaml-0.1.3-4.el6_6.x86_64.rpm
[root@server1 ~]# yum install -y ruby-2.2.3-1.el6.x86_64.rpm
[root@server1 ~]# gem install --local redis-4.0.1.gem
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed
[root@server1 ~]# gem list --local
*** LOCAL GEMS ***
bigdecimal (1.2.6)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
redis (4.0.1)
test-unit (3.0.8)
3.配置7001节点:
[root@server1 ~]# cd /usr/local/cluster/
[root@server1 cluster]# ls
7001 7002 7003 7004 7005 7006
[root@server1 cluster]# cd 7001/
[root@server1 7001]# ls
redis.conf
[root@server1 7001]# vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
pidfile /usr/local/cluster/7001/redis.pid
logfile /usr/local/cluster/7001/redis.log
[root@server1 7001]# redis-server redis.conf ##刷新服务
[root@server1 7001]# cat /proc/sys/net/core/somaxconn
128
[root@server1 7001]# echo 511 > /proc/sys/net/core/somaxconn
[root@server1 7001]# sysctl -w vm.overcommit_memory=1
vm.overcommit_memory = 1 ##添加到下边文件的最后一行
[root@server1 7001]# vim /etc/sysctl.conf
[root@server1 7001]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
4.配置其他节点:
[root@server1 7001]# cp redis.conf ../7002
[root@server1 7001]# cp redis.conf ../7003
[root@server1 7001]# cp redis.conf ../7004
[root@server1 7001]# cp redis.conf ../7005
[root@server1 7001]# cp redis.conf ../7006
[root@server1 7001]# cd ..
[root@server1 cluster]# ls
7001 7002 7003 7004 7005 7006
这里用7002做示范,其他的以此类推
[root@server1 cluster]# cd 7002/
[root@server1 7002]# vim redis.conf
[root@server1 7002]# redis-server redis.conf
(1)7001替换为7002:
最后完整文件:
(2)查看进程:
[root@server1 7006]# ps ax
4508 ? Ssl 0:01 redis-server *:7001 [cluster]
4524 ? Ssl 0:00 redis-server *:7002 [cluster]
4531 ? Ssl 0:00 redis-server *:7003 [cluster]
4537 ? Ssl 0:00 redis-server *:7004 [cluster]
4543 ? Ssl 0:00 redis-server *:7005 [cluster]
4552 ? Ssl 0:00 redis-server *:7006 [cluster]
5.创建redis集群:
【master】 7001 7003 7002
【slave】 7005 7004 7006
自动进行随机分配
[root@server1 7006]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7006 to 127.0.0.1:7002
Adding replica 127.0.0.1:7004 to 127.0.0.1:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 33c5df055c0193a1c7f04075b6d961ac104eed62 127.0.0.1:7001
slots:0-5460 (5461 slots) master
M: ad48f359306289e271e409594f30cd9f40599f12 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
M: f099bfe1ee0fdf7512eb79a9bac335271eb911ad 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
S: 6353aca67a1a8a042128e53cc9d7ee70ae5a33ef 127.0.0.1:7004
replicates f099bfe1ee0fdf7512eb79a9bac335271eb911ad
S: 0849efaeb530658d9a886153705c2da5b4c6884a 127.0.0.1:7005
replicates 33c5df055c0193a1c7f04075b6d961ac104eed62
S: de59901e02dcba0b3d883733de556d83f09957e9 127.0.0.1:7006
replicates ad48f359306289e271e409594f30cd9f40599f12
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 127.0.0.1:7001)
M: 33c5df055c0193a1c7f04075b6d961ac104eed62 127.0.0.1:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 0849efaeb530658d9a886153705c2da5b4c6884a 127.0.0.1:7005
slots: (0 slots) slave
replicates 33c5df055c0193a1c7f04075b6d961ac104eed62
M: f099bfe1ee0fdf7512eb79a9bac335271eb911ad 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 6353aca67a1a8a042128e53cc9d7ee70ae5a33ef 127.0.0.1:7004
slots: (0 slots) slave
replicates f099bfe1ee0fdf7512eb79a9bac335271eb911ad
M: ad48f359306289e271e409594f30cd9f40599f12 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: de59901e02dcba0b3d883733de556d83f09957e9 127.0.0.1:7006
slots: (0 slots) slave
replicates ad48f359306289e271e409594f30cd9f40599f12
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
6.登陆节点,查看对应信息:
[root@server1 7006]# redis-cli -c -p 7001
127.0.0.1:7001> info
下图可以看出,7001为master,对应的slave是7005
【3】
1.在【server1】配置LNMP架构:
(1)安装php,nginx服务:
[root@server1 ~]# cd redis/
[root@server1 redis]# ls
codis-release3.2.zip php-cli-5.3.3-38.el6.x86_64.rpm
gearman-1.1.2.tgz php-common-5.3.3-38.el6.x86_64.rpm
gearmand-1.1.8-2.el6.x86_64.rpm php-devel-5.3.3-38.el6.x86_64.rpm
gearman-mysql-udf-0.6.tar.gz php-fpm-5.3.3-38.el6.x86_64.rpm
go1.8.linux-amd64.tar.gz php-gd-5.3.3-38.el6.x86_64.rpm
jemalloc-3.6.0-1.el6.x86_64.rpm php-mbstring-5.3.3-38.el6.x86_64.rpm
jemalloc-devel-3.6.0-1.el6.x86_64.rpm php-mysql-5.3.3-38.el6.x86_64.rpm
libevent-1.4.13-4.el6.x86_64.rpm php-pdo-5.3.3-38.el6.x86_64.rpm
libevent-devel-1.4.13-4.el6.x86_64.rpm phpredis-master.zip
libevent-doc-1.4.13-4.el6.noarch.rpm redis-3.0.2.tar.gz
libevent-headers-1.4.13-4.el6.noarch.rpm redis-4.0.1.gem
libgearman-1.1.8-2.el6.x86_64.rpm redis-4.0.1.tar.gz
libgearman-devel-1.1.8-2.el6.x86_64.rpm redis-4.0.8.tar.gz
lib_mysqludf_json-master.zip rhel6 Redis.pdf
libyaml-0.1.3-4.el6_6.x86_64.rpm ruby-2.2.3-1.el6.x86_64.rpm
nginx-1.10.2-1.el6.x86_64.rpm rubygems-1.3.7-5.el6.noarch.rpm
nginx-1.8.0-1.el6.ngx.x86_64.rpm test.php
nginx-all-modules-1.10.2-1.el6.noarch.rpm test.sql
nginx-filesystem-1.10.2-1.el6.noarch.rpm tokyocabinet-1.4.33-6.el6.x86_64.rpm
php-5.3.3-38.el6.x86_64.rpm worker.php
[root@server1 redis]# yum install -y nginx-1.8.0-1.el6.ngx.x86_64.rpm php-*
(2)配置PHP服务:
[root@server1 redis]# cd /etc/php.d/
[root@server1 php.d]# vim /etc/php.ini
##修改用户与组
[root@server1 php.d]# cd /etc/php-fpm.d/
[root@server1 php-fpm.d]# ls
www.conf
[root@server1 php-fpm.d]# vim www.conf
[root@server1 php-fpm.d]# /etc/init.d/php-fpm start
Starting php-fpm: [ OK ]
(3)配置nginx服务:
[root@server1 conf.d]# vim default.conf
[root@server1 conf.d]# /etc/init.d/nginx start
Starting nginx: [ OK ]
[root@server1 conf.d]# cd /usr/share/nginx/html/
[root@server1 html]# ls
50x.html index.html
[root@server1 html]# vim index.php
(5)进行测试php服务
(6)添加【server3】的信息在php
[root@server1 ~]# ls
redis
[root@server1 ~]# cd redis/
[root@server1 redis]# cp test.php /usr/share/nginx/html/index.php
cp: overwrite `/usr/share/nginx/html/index.php'? y
[root@server1 redis]# cd /usr/share/nginx/html
[root@server1 html]# vim index.php
[root@server1 ~]# cd redis/
[root@server1 redis]# yum install -y unzip
[root@server1 redis]# unzip phpredis-master.zip
[root@server1 redis]# cd phpredis-master
[root@server1 phpredis-master]# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@server1 phpredis-master]# ./configure
[root@server1 phpredis-master]# make && make install
[root@server1 phpredis-master]# cd /usr/lib64/php/modules/
[root@server1 modules]# ls
curl.so json.so mysql.so pdo_sqlite.so sqlite3.so
fileinfo.so mbstring.so pdo_mysql.so phar.so zip.so
gd.so mysqli.so pdo.so redis.so
(8)建立redis与数据库的连接
[root@server1 ~]# cd /etc/php.d/
[root@server1 php.d]# ls
curl.ini json.ini mysql.ini pdo_sqlite.ini zip.ini
fileinfo.ini mbstring.ini pdo.ini phar.ini
gd.ini mysqli.ini pdo_mysql.ini sqlite3.ini
[root@server1 php.d]# cp mysql.ini redis.ini
[root@server1 php.d]# vim redis.ini
[root@server1 php.d]# /etc/init.d/php-fpm reload
Reloading php-fpm: [12-Aug-2018 13:46:34] NOTICE: configuration file /etc/php-fpm.conf test is successful
[ OK ]
【server3】配置数据库
1.下载数据库
[root@server3 mysql]# cd /var/lib/mysql
[root@server3 mysql]# ls
[root@server3 mysql]# rpm -e --nodeps `rpm -qa|grep mysql`
warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave
[root@server3 mysql]# yum install -y mysql-server
2.登陆数据库授权
[root@server3 mysql]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.71 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> grant all on test.* to redis@'%' identified by 'westos';
Query OK, 0 rows affected (0.00 sec)
3.【server1】发送数据包脚本到mysql端
[root@server1 ~]# cd redis/
[root@server1 redis]# scp test.sql [email protected]:/root
The authenticity of host '172.25.39.3 (172.25.39.3)' can't be established.
RSA key fingerprint is ce:b7:35:21:60:9f:f3:8d:f4:25:af:73:ad:ad:bc:ab.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.39.3' (RSA) to the list of known hosts.
root@172.25.39.3's password:
test.sql 100% 493 0.5KB/s 00:00
4.【server3】导入数据到mysql
[root@server3 ~]# mysql < test.sql
6.【server3】中改变表中数据
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from test;
+----+--------+
| id | name |
+----+--------+
| 1 | westos |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
| 6 | test6 |
| 7 | test7 |
| 8 | test8 |
| 9 | test9 |
+----+--------+
9 rows in set (0.00 sec)
6.再次在网页测试的时候发现redis没有同步更新过去,所以进行下列配置:
(1)下载服务包:
[root@server1 redis]# yum install -y gearmand-1.1.8-2.el6.x86_64.rpm libgearman-* libevent-*
(2)编译lib_mysqludf_json-master.zip服务包
[root@server3 ~]# ls
anaconda-ks.cfg install.log.syslog MHA test.sql
install.log lib_mysqludf_json-master.zip mysql
[root@server3 ~]# unzip lib_mysqludf_json-master.zip
Archive: lib_mysqludf_json-master.zip
37f851c808c4161beb4d5e535771dc0c59c82de6
creating: lib_mysqludf_json-master/
inflating: lib_mysqludf_json-master/README.md
inflating: lib_mysqludf_json-master/lib_mysqludf_json.c
inflating: lib_mysqludf_json-master/lib_mysqludf_json.html
inflating: lib_mysqludf_json-master/lib_mysqludf_json.so
inflating: lib_mysqludf_json-master/lib_mysqludf_json.sql
[root@server3 ~]# cd lib_mysqludf_json-master
[root@server3 lib_mysqludf_json-master]# yum install -y mysql-devel gcc
[root@server3 lib_mysqludf_json-master]# gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
[root@server3 lib_mysqludf_json-master]# ll
total 100
-rw-r--r-- 1 root root 25921 Feb 22 2013 lib_mysqludf_json.c
-rw-r--r-- 1 root root 20576 Feb 22 2013 lib_mysqludf_json.html
-rwxr-xr-x 1 root root 22223 Aug 12 15:34 lib_mysqludf_json.so
-rw-r--r-- 1 root root 1431 Feb 22 2013 lib_mysqludf_json.sql
-rw-r--r-- 1 root root 16416 Feb 22 2013 README.md
root@server3 ~]# cd /root/lib_mysqludf_json-master
[root@server3 lib_mysqludf_json-master]# cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
mysql> show global variables like 'plugin_dir';
+---------------+-------------------------+
| Variable_name | Value |
+---------------+-------------------------+
| plugin_dir | /usr/lib64/mysql/plugin |
+---------------+-------------------------+
1 row in set (0.00 sec)
mysql> CREATE FUNCTION json_object RETURNS STRING SONAME
-> 'lib_mysqludf_json.so';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
[root@server3 ~]# tar zxf gearman-mysql-udf-0.6.tar.gz
[root@server3 ~]# ls
gearman-mysql-udf-0.6 lib_mysqludf_json-master.zip redis-4.0.8.tar.gz
gearman-mysql-udf-0.6.tar.gz mha4mysql-node-0.56-0.el6.noarch.rpm test.sql
lib_mysqludf_json-master redis-4.0.8
[root@server3 ~]# cd gearman-mysql-udf-0.6
[root@server3 ~]# yum install libgearman-* libevent-* -y
[root@server3 ~]# cd gearman-mysql-udf-0.6
[root@server3 gearman-mysql-udf-0.6]# ls
aclocal.m4 ChangeLog config.h.in configure.ac libgearman_mysql_udf Makefile.am NEWS
AUTHORS config configure COPYING m4 Makefile.in README
[root@server3 gearman-mysql-udf-0.6]# ./configure --libdir=/usr/lib64/mysql/plugin/
[root@server3 gearman-mysql-udf-0.6]# make && make install
mysql>
mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME
-> 'libgearman_mysql_udf.so';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from mysql.func;
+--------------------+-----+-------------------------+----------+
| name | ret | dl | type |
+--------------------+-----+-------------------------+----------+
| json_object | 0 | lib_mysqludf_json.so | function |
| gman_do_background | 0 | libgearman_mysql_udf.so | function |
| gman_servers_set | 0 | libgearman_mysql_udf.so | function |
+--------------------+-----+-------------------------+----------+
3 rows in set (0.00 sec)
mysql> SELECT gman_servers_set('172.25.38.1:4730');
+--------------------------------------+
| gman_servers_set('172.25.38.1:4730') |
+--------------------------------------+
| 172.25.38.1:4730 |
+--------------------------------------+
1 row in set (0.00 sec)
7.修改数据脚本
[root@server3 ~]# vim test.sql
[root@server3 ~]# mysql < test.sql
8.【server1】编译
[root@server1 ~]# ll worker.php
-rw-r--r-- 1 root root 452 Aug 12 11:58 worker.php
[root@server1 ~]# cp worker.php /usr/local/
[root@server1 ~]# ll gearman-1.1.2.tgz
-rw-r--r-- 1 root root 30961 Aug 12 11:58 gearman-1.1.2.tgz
[root@server1 ~]# tar zxf gearman-1.1.2.tgz
[root@server1 ~]# cd gearman-1.1.2
[root@server1 gearman-1.1.2]# ls
ChangeLog CREDITS LICENSE php_gearman.h test_client.php test_worker.php
config.m4 examples php_gearman.c README tests
[root@server1 gearman-1.1.2]# phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@server1 gearman-1.1.2]# ./configure && make && make install
[root@server1 gearman-1.1.2]# cd /usr/lib64/php/modules/
[root@server1 modules]# ls
curl.so gearman.so mysqli.so pdo.so redis.so
fileinfo.so json.so mysql.so pdo_sqlite.so sqlite3.so
gd.so mbstring.so pdo_mysql.so phar.so zip.so
[root@server1 modules]# cd /etc/php.d/
[root@server1 php.d]# ls
curl.ini gd.ini mbstring.ini mysql.ini pdo_mysql.ini phar.ini sqlite3.ini
fileinfo.ini json.ini mysqli.ini pdo.ini pdo_sqlite.ini redis.ini zip.ini
[root@server1 php.d]# cp redis.ini gearman.ini
[root@server1 php.d]# vim gearman.ini
[root@server1 php.d]# cat gearman.ini
extension=gearman.so
[root@server1 php.d]# /etc/init.d/php-fpm reload
Reloading php-fpm: [12-Aug-2018 15:05:20] NOTICE: configuration file /etc/php-fpm.conf test is successful
[ OK ]
[root@server1 php.d]# php -m | grep gearman
gearman
[root@server1 php.d]# cd /usr/local/
[root@server1 local]# ls
bin cluster etc games include lib lib64 libexec sbin share src worker.php
[root@server1 local]# vim worker.php
[root@server1 local]# cat worker.php
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction('syncToRedis', 'syncToRedis');
$redis = new Redis();
$redis->connect('172.25.39.2', 6379);
while($worker->work());
function syncToRedis($job)
{
global $redis;
$workString = $job->workload();
$work = json_decode($workString);
if(!isset($work->id)){
return false;
}
$redis->set($work->id, $work->name);
}
?>
9.打入后台
[root@server1 local]# nohup php worker.php &
[1] 9824
[root@server1 local]# nohup: ignoring input and appending output to `nohup.out'
[root@server1 local]#
【server3】
[root@server3 ~]# ps ax
1639 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql
1741 pts/0 Sl 11:47 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib
1842 ? S 0:00 pickup -l -t fifo -u
5350 pts/0 R+ 0:00 ps ax
[root@server3 ~]# kill -9 1639
[root@server3 ~]# kill -9 1741
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update test set name='redhat';
Query OK, 9 rows affected (0.05 sec)
Rows matched: 9 Changed: 9 Warnings: 0