【LAMP架构-3】

AWS(LAMP部署) 你是一名云计算运维工程师,现在需要为某电商企业构建交易网站(LAMP架构)。通过多次沟通交流,最后此单位决定在AWS云的中国区域中部署此网站。现在,需要为客户实现高可用性和高弹性的架构,同时正确部署LAMP应用。 阅读详情

mysql路由器

重启组复制

server1

mysql>  SET GLOBAL group_replication_bootstrap_group=ON; 

mysql> START GROUP_REPLICATION;

mysql> SET GLOBAL group_replication_bootstrap_group=OFF; 

mysql> SELECT * FROM performance_schema.replication_group_members;

server2

mysql> START GROUP_REPLICATION;

mysql> SELECT * FROM performance_schema.replication_group_members;

server3

mysql> START GROUP_REPLICATION;

mysql> SELECT * FROM performance_schema.replication_group_members;

安装软件

[root@server4 ~]# rpm -ivh mysql-router-community-8.0.46-1.el7.x86_64.rpm

配置服务

[root@server4 ~]# cd /etc/mysqlrouter/
[root@server4 mysqlrouter]# vim mysqlrouter.conf

[routing:ro]
bind_address = 0.0.0.0
bind_port = 7001
destinations = 192.168.247.129:3306,192.168.247.130:3306,192.168.247.132:3306
routing_strategy = round-robin

[routing:rw]
bind_address = 0.0.0.0
bind_port = 7002
destinations = 192.168.247.129:3306,192.168.247.130:3306,192.168.247.132:3306
routing_strategy = first-available

启动服务

[root@server4 mysqlrouter]# systemctl enable --now mysqlrouter.service

安装mysql客户端工具

[root@server4 mysqlrouter]# yum install -y mariadb

在mysql集群中创建远程测试用户

mysql>  create user 'wxh'@'%' identified by 'westos';

mysql> grant all on test.* to 'wxh'@'%';

连接mysql路由器

[root@server4 mysqlrouter]# mysql -h 192.168.247.133 -P 7001 -u wxh -pwestos

MySQL [(none)]> select * from test.t1;

在server1上查看网络连接

[root@server1 ~]# yum install -y lsof
[root@server1 ~]# lsof -i :3306

重新连接mysql路由器

MySQL [(none)]> exit;

[root@server4 mysqlrouter]# mysql -h 192.168.247.133 -P 7001 -u wxh -pwestos

在server2上查看网络连接

[root@server2 ~]# yum install -y lsof

[root@server2 ~]# lsof -i :3306

再重复上面的操作在server3上查看

证明具有负载均衡作用(routing_strategy = round-robin)

InnoDB Cluster

配置单组模式

关闭所有mysqld节点,修改参数后重新启动组复制

group_replication_single_primary_mode=ON

group_replication_enforce_update_everywhere_checks=OFF

[root@server1 ~]# vim /etc/mysql/my.cnf

[root@server1 ~]# systemctl restart mysqld

server2和server3进行同样操作

重启组复制

server1

mysql> SET GLOBAL group_replication_bootstrap_group=ON;

mysql> START GROUP_REPLICATION;

mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

mysql> SELECT * FROM performance_schema.replication_group_members;

server2和server3

mysql> START GROUP_REPLICATION;

mysql> SELECT * FROM performance_schema.replication_group_members;

mysql shell

[root@server4 ~]# yum install -y mysql-shell-8.0.46-1.el7.x86_64.rpm

在primary节点创建集群管理员

mysql> CREATE USER icadmin@'%' IDENTIFIED BY 'westos';

mysql> GRANT ALL PRIVILEGES ON *.* TO icadmin@'%' WITH GRANT OPTION;

mysql>  FLUSH PRIVILEGES;

[root@server4 ~]# mysqlsh icadmin@192.168.247.129:3306

接管现有mgr集群

var cluster = dba.createCluster("mgr_single_cluster", {adoptFromGR:true, force:true});

验证集群状态

cluster.status();

mysql router

自动生成配置

[root@server4 ~]# mysqlrouter --bootstrap icadmin@192.168.247.129:3306 --user=mysqlrouter

查看

[root@server4 ~]# vim /etc/mysqlrouter/mysqlrouter.conf

[root@server4 ~]# systemctl  restart mysqlrouter.service

验证

[root@server4 ~]# mysql -h 192.168.247.133 -P 6446 -u wxh -pwestos

[root@server1 ~]# lsof -i :3306

只有server1上有连接,因为server1是primary节点

验证负载均衡效果

[root@server4 ~]# mysql -h 192.168.247.133 -P 6447 -u wxh -pwestos

此时退出重连

MySQL [(none)]> exit;

[root@server4 ~]# mysql -h 192.168.247.133 -P 6447 -u wxh -pwestos

mysqlrouter 高可用与横向扩容

增添3台虚拟机+配置静态ip

[root@server5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@server5 ~]# nmcli c r

[root@server5 ~]# nmcli c up ens33

server6和server7同理操作(保证ip地址连续递增方便查看)

配置ip地址解析

[root@server1 ~]# vim /etc/hosts

然后通过scp命令复制到其余server上

在server5上配置mysql路由器

安装软件

[root@server5 ~]# rpm -ivh mysql-router-community-8.0.46-1.el7.x86_64.rpm

启动服务

[root@server5 ~]# systemctl enable --now mysqlrouter.service

自动生成配置

[root@server5 ~]# mysqlrouter --bootstrap icadmin@192.168.247.129:3306 --user=mysqlrouter

[root@server5 ~]# systemctl  restart mysqlrouter.service

server6和server7上配置keepalived

[root@server6 ~]# vim /etc/keepalived/keepalived.conf

[root@server6 ~]# scp /etc/keepalived/keepalived.conf server7:/etc/keepalived/keepalived.conf
[root@server7 ~]# vim /etc/keepalived/keepalived.conf

[root@server6 ~]# yum install -y ipvsadm
[root@server7 ~]# yum install -y ipvsadm

[root@server6 ~]# systemctl start keepalived

[root@server7 ~]# systemctl start keepalived

server6为keepalived的主节点

查看调度列表

[root@server6 ~]# ipvsadm -ln

[root@server7 ~]# ipvsadm -ln

server4和server5上配置LVS

[root@server4 ~]# ip a a 192.168.247.100/24 dev ens33

[root@server4 ~]# yum install -y arptables

[root@server4 ~]# arptables -A INPUT -d 192.168.247.100 -j DROP

[root@server4 ~]# arptables -A OUTPUT -s 192.168.247.100 -j mangle --mangle-ip-s 192.168.247.133

[root@server4 ~]# arptables-save > /etc/sysconfig/arptables

server5同理操作

验证

6446端口(读写)

[root@server1 ~]# watch lsof -i :3306

[root@server7 ~]# mysql -h 192.168.247.100 -P 6446 -u wxh -pwestos

此时停掉server4上的mysqlrouter服务

[root@server4 ~]# systemctl stop mysqlrouter.service

[root@server6 ~]# ipvsadm -ln

发现server4不在调度列表中了

此时由server5的路由接管

此时停止server6的keepalived服务

[root@server6 ~]# systemctl stop keepalived.service

[root@server7 ~]# ip a

keepalived服务迁移到server7上

[root@server6 ~]#  mysql -h 192.168.247.100 -P 6446 -u wxh -pwestos

[root@server7 ~]# ipvsadm -ln

6447端口(只读)

[root@server7 ~]# mysql -h 192.168.247.100 -P 6447 -u wxh -pwestos

[root@server2 ~]# lsof -i :3306

退出后重连一次

[root@server3 ~]# lsof -i :3306

可以看到server2和server3是负载均衡的

停止server4上的mysqlrouter服务

[root@server4 ~]# systemctl stop mysqlrouter.service

[root@server7 ~]# mysql -h 192.168.247.100 -P 6447 -u wxh -pwestos

可以发现路由切换到server5上

再退出重连

[root@server7 ~]# mysql -h 192.168.247.100 -P 6447 -u wxh -pwestos

server2和server3是负载均衡的

停止server6的keepalived服务

[root@server6 ~]# systemctl stop keepalived.service

[root@server7 ~]# ip a

keepalived服务切换到server7

[root@server6 ~]#  mysql -h 192.168.247.100 -P 6447 -u wxh -pwestos

[root@server7 ~]# ipvsadm -ln

再退出重连

[root@server6 ~]#  mysql -h 192.168.247.100 -P 6447 -u wxh -pwestos

可以看到server2和server3是负载均衡的

mysql MHA高可用

创建一主两从集群

master

清理数据

[root@server1 ~]# systemctl  stop mysqld.service
[root@server1 ~]# cd /data/mysql
[root@server1 mysql]# rm -fr *

修改配置

[root@server1 mysql]# vim /etc/mysql/my.cnf

[mysqld]

...

server_id=1

gtid_mode=ON

enforce_gtid_consistency=ON

log_slave_updates=ON

log_bin=binlog

初始化

[root@server1 mysql]# mysqld --defaults-file=/etc/mysql/my.cnf --initialize

启动服务

[root@server1 mysql]# systemctl  start mysqld

配置master

[root@server1 mysql]# grep "temporary password" /data/mysql/mysql-error.log

[root@server1 mysql]# mysql -p

mysql> alter user root@localhost identified by 'westos';

mysql> CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'westos';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

mysql> show master status;

slave

[root@server2 ~]# systemctl  stop mysqld.service
[root@server2 ~]# cd /data/mysql/
[root@server2 mysql]# rm -fr *
[root@server2 mysql]# vim /etc/mysql/my.cnf

[mysqld]

...

server_id=2

gtid_mode=ON

enforce_gtid_consistency=ON

log_slave_updates=ON

log_bin=binlog

[root@server2 mysql]# mysqld --defaults-file=/etc/mysql/my.cnf --initialize
[root@server2 mysql]# systemctl start mysqld

[root@server2 mysql]# grep "temporary password" /data/mysql/mysql-error.log

[root@server2 mysql]# mysql -p

mysql> alter user root@localhost identified by 'westos';

mysql> change master to master_host='192.168.247.129', master_user='repl', master_password='westos', master_auto_position=1;

mysql> start slave;

mysql>  show slave status\G;

server3同理

测试

master

mysql> create database westos;

mysql> use westos

mysql> CREATE TABLE user_tb ( username VARCHAR(25) NOT NULL, password VARCHAR(50) NOT NULL );

mysql> insert into user_tb values ('user1','111');

mysql> insert into user_tb values ('user2','222')

slave

mysql> select * from westos.user_tb;


MHA部署

server4上安装软件

[root@server4 ~]# yum install -y epel-release

[root@server4 ~]# yum clean all

[root@server4 ~]# yum makecache

[root@server4 ~]# yum install -y perl-Log-Dispatch perl-Parallel-ForkManager

[root@server4 ~]# yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm

管理端配置ssh免密

[root@server4 ~]# ssh-keygen

[root@server4 ~]# ssh-copy-id server4

把密钥复制到各节点

[root@server4 ~]# scp -r .ssh/ server1:

[root@server4 ~]# scp -r .ssh/ server2:

[root@server4 ~]# scp -r .ssh/ server3:

复制客户端软件

[root@server4 ~]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server1:

[root@server4 ~]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server2:

[root@server4 ~]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server3:

server1、server2、server3上安装客户端软件

[root@server1 ~]# yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

MHA配置

[root@server4 ~]# mkdir /etc/masterha
[root@server4 ~]#  vim /etc/masterha/app1.cnf

[server default]
user=root                       #mysql管理员
password=westos                 #mysql管理员密码
ssh_user=root                   #ssh免密用户
repl_user=repl                  #mysql主从复制用户
repl_password=westos
master_binlog_dir=/data/mysql   #mysql数据库目录
remote_workdir=/tmp
secondary_check_script= masterha_secondary_check -s 192.168.247.130 -s 192.168.247.132
ping_interval=3
# master_ip_failover_script= /script/masterha/master_ip_failover
# shutdown_script= /script/masterha/power_manager
# report_script= /script/masterha/send_report
# master_ip_online_change_script= /script/masterha/master_ip_online_change
manager_workdir=/etc/masterha/app1
manager_log=/etc/masterha/app1/manager.log

[server1]
hostname=192.168.247.129
candidate_master=1
check_repl_delay=0

[server2]
hostname=192.168.247.130
candidate_master=1
check_repl_delay=0

[server3]
hostname=192.168.247.132
no_master=1

在master上设置mysql 管理员权限,slave节点会自动同步

mysql> CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'westos';

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;

检测各节点ssh免密连接

[root@server4 ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf

检测主从复制集群状态

[root@server4 ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

故障切换

手动切换(master正常)

[root@server4 ~]# masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=192.168.247.130 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000

手动切换(master故障)

手动停止master节点上的msql服务

[root@server2 ~]# systemctl stop mysqld.service

[root@server4 ~]# masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.cnf --dead_master_host=192.168.247.130 --dead_master_port=3306 --new_master_host=192.168.247.129 --new_master_port=3306 --ignore_last_failover

故障节点需要手动修复,重新加入主从集群

[root@server2 ~]# systemctl start mysqld.service
[root@server2 ~]# mysql -pwestos

mysql> change master to master_host='192.168.247.129', master_user='repl', master_password='westos', master_auto_position=1;

mysql> start slave;

自动切换

在进行自动切换之前,必须保证主从集群正常,一主两从

故障切换后会生成lock文件,需要手动删除

[root@server4 ~]# cd /etc/masterha/app1

[root@server4 app1]# rm -f app1.failover.complete

启动manger程序,并打入后台运行,完成切换任务后进程会自动退出

[root@server4 ~]# masterha_manager --conf=/etc/masterha/app1.cnf &

加入故障切换脚本
[root@server4 ~]# vim  /etc/masterha/app1.cnf

[root@server4 ~]# mkdir -p  /script/masterha/

[root@server4 ~]# cp master_ip_failover /script/masterha/
[root@server4 ~]# cp master_ip_online_change /script/masterha/

需要有可执行权限

[root@server4 ~]# chmod +x /script/masterha/master_ip_failover
[root@server4 ~]# chmod +x /script/masterha/master_ip_online_change

按需修改vip和网卡名称

[root@server4 ~]# vim /script/masterha/master_ip_failover

[root@server4 ~]# vim /script/masterha/master_ip_online_change

关闭master以后,会自动发起故障切换,mha管理器在完成切换后自动退出程序

[root@server1 ~]# systemctl stop mysqld

查看故障切换日志

[root@server4 ~]# cd /etc/masterha/app1/

[root@server4 app1]# tail -f manager.log

验证vip漂移

[root@server2 ~]# ip a

验证新主从状态

Redis数据库

Redis部署

编译安装

[root@server1 ~]# tar zxf redis-6.2.4.tar.gz

[root@server1 ~]# cd redis-6.2.4/

[root@server1 redis-6.2.4]# make

[root@server1 redis-6.2.4]# make install

[root@server1 redis-6.2.4]# cd utils/
[root@server1 utils]# vim install_server.sh

注释以下内容

运行安装脚本

[root@server1 utils]# ./install_server.sh

[root@server1 utils]# netstat -anltp | grep :6379

[root@server1 ~]# vim /etc/redis/6379.conf

监听本机所有端口

重启服务

[root@server1 ~]# /etc/init.d/redis_6379 restart

[root@server1 ~]# netstat -anltp | grep :6379

Redis主从复制

server2和server3按照之前的方式部署后修改配置文件

[root@server2 utils]# vim /etc/redis/6379.conf

[root@server2 utils]# /etc/init.d/redis_6379 restart

测试

master写入数据

[root@server1 ~]# redis-cli
127.0.0.1:6379> info

127.0.0.1:6379> set name westos

查看slave端是否同步

Redis高可用

[root@server1 redis-6.2.4]# cp sentinel.conf /etc/redis/
[root@server1 redis-6.2.4]# cd /etc/redis/
[root@server1 redis]# vim sentinel.conf

port 26379

daemonize no

pidfile /var/run/redis-sentinel.pid

logfile ""

dir /tmp

sentinel monitor mymaster 192.168.247.129 6379 2

sentinel down-after-milliseconds mymaster 10000

acllog-max-len 128

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

sentinel deny-scripts-reconfig yes

SENTINEL resolve-hostnames no

SENTINEL announce-hostnames no

拷贝配置文件

[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/

启动服务

[root@server1 redis]# redis-sentinel /etc/redis/sentinel.conf

其它主机直接启动服务,无需更改配置文件

[root@server2 ~]# redis-sentinel /etc/redis/sentinel.conf

[root@server3 ~]# redis-sentinel /etc/redis/sentinel.conf

关闭redis master

[root@server1 ~]# redis-cli shutdown

redis集群会自动切换master

当原来的master再次启动后,会以slave身份加入集群

[root@server1 ~]# /etc/init.d/redis_6379 start

[root@server1 ~]# redis-cli
127.0.0.1:6379> info

Redis Cluster

创建集群

[root@server1 ~]# cd redis-6.2.4/utils/create-cluster/

[root@server1 create-cluster]# ./create-cluster start

[root@server1 create-cluster]# ./create-cluster create

查看命令帮助

[root@server1 create-cluster]# redis-cli --cluster help

获取集群状态

[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001

连接集群

[root@server1 create-cluster]# redis-cli -c -p 30001 info

[root@server1 create-cluster]# redis-cli -c -p 30004
127.0.0.1:30004> set name wxh
-> Redirected to slot [5798] located at 127.0.0.1:30002
OK

关闭redis实例,集群自动切换

[root@server1 create-cluster]# redis-cli -c -p 30002 shutdown

数据完好

[root@server1 create-cluster]# redis-cli -c -p 30001
127.0.0.1:30001> get name
-> Redirected to slot [5798] located at 127.0.0.1:30005
"wxh"
127.0.0.1:30005>

启动redis实例

[root@server1 create-cluster]# ./create-cluster  start

[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001

再添加两个redis实例

[root@server1 create-cluster]# vim create-cluster

[root@server1 create-cluster]# ./create-cluster start

添加集群节点

[root@server1 create-cluster]# redis-cli --cluster add-node 127.0.0.1:30007 127.0.0.1:30001

[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001

新添加的节点没有hash槽,角色时是master

添加slave节点

[root@server1 create-cluster]# redis-cli --cluster add-node 127.0.0.1:30008 127.0.0.1:30001 --cluster-slave --cluster-master-id e5278165764a0154bfb70b79793c0a079f04e5e4

迁移哈希槽

[root@server1 create-cluster]# redis-cli --cluster reshard 127.0.0.1:30001

[root@server1 create-cluster]# redis-cli --cluster check 127.0.0.1:30001

Codis集群

下载与编译

1.安装go运行环境

[root@server1 ~]# wget https://dl.google.com/go/go1.8.3.linux-amd64.tar.gz
[root@server1 ~]# tar -zxvf go1.8.3.linux-amd64.tar.gz -C /usr/local/

[root@server1 ~]# go version

2.设置编译环境

[root@server1 ~]# vim /etc/profile

[root@server1 ~]# source /etc/profile

[root@server1 ~]# go env GOPATH

3.下载 Codis 源代码

[root@server1 ~]# mkdir -p $GOPATH/src/github.com/CodisLabs
[root@server1 ~]# cd $_
[root@server1 CodisLabs]# git clone https://github.com/CodisLabs/codis.git -b release3.2

[root@server1 CodisLabs]# cd codis
[root@server1 codis]# pwd


4.编译 Codis 源代码

[root@server1 codis]# cd $GOPATH/src/github.com/CodisLabs/codis

[root@server1 codis]# make 

[root@server1 codis]# ls bin/

[root@server1 codis]# cat bin/version

快速启动

[root@server1 codis]# cd $GOPATH/src/github.com/CodisLabs/codis
[root@server1 codis]# mkdir -p log

1.启动 codis-dashboard

[root@server1 codis]# ./admin/codis-dashboard-admin.sh start
[root@server1 codis]# tail -f log/codis-dashboard.log.*

2.启动 codis-proxy

[root@server1 codis]# ./admin/codis-proxy-admin.sh start

[root@server1 codis]# tail -f log/codis-proxy.log.*

3.启动 codis-server

[root@server1 codis]# ./admin/codis-server-admin.sh start

[root@server1 codis]# tail -f /tmp/redis_6379.log

4.启动 codis-fe

[root@server1 codis]# ./admin/codis-fe-admin.sh start

[root@server1 codis]# tail -f log/codis-fe.log.*

5.Web 界面初始化集群

浏览器访问 http://192.168.247.129:9090

选中集群 codis-demo

NEW GROUP,输入 1 点击创建分组

Add Server:填入 127.0.0.1:6379 添加到 Group1

点击 rebalance all slots,自动分配全部 1024 个 slot

完成后 proxy 状态变为 online,客户端可以正常连接

客户端测试

一键停止集群

./admin/codis-fe-admin.sh stop

./admin/codis-proxy-admin.sh stop

./admin/codis-dashboard-admin.sh stop

./admin/codis-server-admin.sh stop

生产标准部署

前置:部署 ZooKeeper

yum install -y java-1.8.0-openjdk-devel

su - codis

cd /home/codis

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

tar -zxvf zookeeper-3.4.14.tar.gz

ln -s zookeeper-3.4.14 zookeeper

mkdir -p /home/codis/zookeeper/data

cd zookeeper/conf

cp zoo_sample.cfg zoo.cfg

[root@server1 conf]# vim zoo.cfg

启动zk

[root@server1 conf]# cd /home/codis/zookeeper/bin

[root@server1 bin]# ./zkServer.sh start
[root@server1 bin]# ./zkServer.sh status

配置 codis-dashboard

[root@server1 bin]# cd $GOPATH/src/github.com/CodisLabs/codis
[root@server1 codis]# ./bin/codis-dashboard --default-config | tee config/dashboard.toml

[root@server1 codis]# vim config/dashboard.toml

后台启动

[root@server1 codis]# mkdir -p logs
[root@server1 codis]# nohup ./bin/codis-dashboard --ncpu=2 --config=config/dashboard.toml \
> --log=logs/dashboard.log --log-level=WARN &


配置 codis-proxy

[root@server1 codis]# ./bin/codis-proxy --default-config | tee config/proxy.toml
[root@server1 codis]# vim config/proxy.toml

启动 codis-server

实例1:16379 master

[root@server1 codis]# cp extern/redis-3.2.11/redis.conf redis_16379.conf
[root@server1 codis]# sed -i 's/port 6379/port 16379/' redis_16379.conf
[root@server1 codis]# sed -i 's/daemonize no/daemonize yes/' redis_16379.conf
[root@server1 codis]# ./bin/codis-server redis_16379.conf

# 实例2:16380 master
[root@server1 codis]# cp extern/redis-3.2.11/redis.conf redis_16380.conf
[root@server1 codis]# sed -i 's/port 6379/port 16380/' redis_16380.conf
[root@server1 codis]# sed -i 's/daemonize no/daemonize yes/' redis_16380.conf
[root@server1 codis]# ./bin/codis-server redis_16380.conf

codis-admin 命令行创建集群分组、分配 slot

# 创建group1、group2

[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --create-group --gid=1
[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --create-group --gid=2


# 添加redis主节点进入分组

[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --group-add --gid=1 --addr=127.0.0.1:16379
[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --group-add --gid=2 --addr=127.0.0.1:16380


# 分配1024个slot

[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --slot-range-set 0 511 --gid=1
[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --slot-range-set 512 1023 --gid=2

# 全部slot上线

[root@server1 codis]# ./bin/codis-admin --dashboard=127.0.0.1:18080 --slot-all-online
 

启动 codis-fe 管理面板

[root@server1 codis]# nohup ./bin/codis-fe --ncpu=2 --log=logs/fe.log --log-level=WARN \
> --zookeeper=127.0.0.1:2181 --listen=0.0.0.0:18080 &
 

金蝶ERP元数据解析:字段属性与表结构映射实战 本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。 阅读详情

相关推荐

TOPSIS+熵权法组合拳:5分钟学会供应商选择决策模型

本文详细介绍了如何运用TOPSIS和熵权法这对黄金组合,快速构建科学、客观的供应商评估决策模型。通过数据标准化、权重计算和综合排序,帮助企业在半小时内完成高效、准确的供应商选择,解决传统主观打分法的弊端,提升供应链管理效率。

weixin_29051149的博客 277

3) LAMP企业架构

简介 该框架包括:Linux操作系统,Apache服务器,MySQL数据库,PHP及Python语言。 所组成产品均是开源,是国际上成熟的架构框架,很多流行的应用都是采取这个架构,和 Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。 LAMP-Apac...

weixin_44894535的博客 199

Dify 从入门到精通:第一篇 - 基础介绍与快速上手

Dify是一个开源的低代码平台,旨在简化大型语言模型(LLM)应用的开发流程。本文作为"Dify从入门到精通"系列的首篇,全面介绍了Dify的核心概念、安装步骤和基本使用方法。文章首先解析了Dify的多模型支持、低代码开发等特点,然后详细讲解了基于Docker的安装配置过程,包括系统要求、环境变量设置等。通过创建一个邮件助手应用的实际示例,展示了Dify的可视化工作流设计功能。最后简要介绍了高级特性和最佳实践,为后续深入学习奠定基础。本文为开发者提供了从零开始使用Dify构建AI应用的完

IT深耕十余载,大道之简 1147

LAMP架构之3——PHP源码编译及使用

lamp架构=Linux + Apach/nginx + Mysql/pgsql + Php/java/python/golang/c/c++/shell 一、PHP源码编译 PHP: Hypertext Preprocessorhttps://www.php.net/ 二、MYSQL源码编译 本章总结: 1、阿里云: 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区阿里巴巴开源镜像站,免费提供Linux镜像下载服务,拥有Ubuntu、CentOS、D.

Zhaohui_Zhang的博客 1874

Quanto option期权公式推导(更新中)

Quanto期权不同于以标的股票或资产的计价货币支付最终收益的普通欧式期权,它以另一种货币以预先确定的汇率支付最后的收益。以股票B的计价货币来计价的quanto看涨期权的收益为F0×max⁡(Sa(T)−K,0)×Sb(T)F_0 \times \max(S_a(T)-K, 0) \times S_b(T)F0​×max(Sa​(T)−K,0)×Sb​(T) 其中SaS_aSa​以货币A计价,SbS_bSb​以货币B计价,F0F_0F0​是预先固定的汇率. 假设上述股票均遵循几何布朗运动,可以得到以下恒等式

qq_41782124的博客 3683

RTX 50系列显卡选购指南:从Stable Diffusion到深度学习,哪款最适合你的AI需求?

本文深入分析了RTX 50系列显卡如何满足不同的AI应用需求。针对Stable Diffusion图像生成,强调显存容量是关键;对于大语言模型本地推理,需平衡算力与显存;而深度学习训练则更看重算力效率。文章对比了RTX 5090、5080、5070等型号的核心规格与适用场景,并提供了从入门到专业的实战配置建议,帮助用户根据自身AI工作负载精准选择最具性价比的显卡。

linux6sysadmin的博客 689

Centos7.3 部署 LAMP 架构动静分离

一、LAMP动静分离 当需要搭建一个高效的web架构时,采用动静分离无疑是最好的选择,这篇博文将写下来LAMP的动静分离部署方式。 所谓LAMP?LAMP架构是目前最成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态web站点服务及其应用开发环境。与之并肩的还有LNMP、LTMP等,LAMP说白了就是Linux操作系统上安装Apache网站服务,构建php/perl/P...

weixin_45116475的博客 590

农经权二轮延包—地块示意图生成

本文介绍了地块示意图制作软件的使用方法及模板制作要点。软件通过设置六个参数(示意图模板、属性数据、地块DBF、导航图、地块图片及存放位置)自动生成Word文档,并可导出PDF。文章详细说明了5页Word模板的制作过程,包括页脚三栏设置和页码插入技巧,支持每户最多28个地块的情况。同时指出该软件生成的图片分辨率(300dpi)满足清晰度要求,并提及软件免费提供插件但收费提供后续服务。

weixin_47364423的博客 1114

Centos 7.3部署LAMP架构动静分离

博文大纲: 一、LAMP动静分离的概念 二、LAMP的安装与配置 三、web网站压力测试 四、部署PHP加速软件Xcache 五、部署bbs论坛 之前写过一篇部署LAMP平台的博文:基于centos 7搭建LNMP架构,只是那个是基于同一台服务器部署的,用来做测试网站或者访问量不大的情况下,是可以应付的,那么?如果该web网站访问量特别大呢? 一、LAMP动静分离的概念 当需要搭建一个高效...

lvjianzhaoa的博客 394

嵌入式铁头山羊stm32:一文总结

本文是一篇STM32嵌入式开发的综合知识总结,涵盖了STM32基础概念、GPIO、通信协议、外设驱动等核心内容。文章首先介绍了STM32的基本概念和型号含义,然后详细讲解了GPIO的8种工作模式及实验案例。接着重点阐述了USART、I2C、SPI三种通信协议的原理和实现方法,包括硬件连接、编程接口和实验应用。此外还介绍了OLED显示原理、中断系统、定时器、ADC转换等关键技术,每个模块都配有对应的实验案例和代码实现参考。文章内容全面系统,既包含理论知识,又提供实践指导,适合作为STM32开发的快速参考手册。

古泽汉书的博客 2785

基于百度地图API在AI Studio上的卫星地图块图像处理与分类

本项目基于百度地图API获取了不同的瓦片地图并进行合并等处理,可用于遥感和抽象地图的地图块的图像分类、分割、检测等数据的制作。瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。首先确定地图服务平台所要提供的缩放级别的数量N,把缩放级别最高、地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第0层瓦片矩阵;

斌擎科技 745

LAMP架构之redis(3):redis+mysql架构

一、redis结合mysql (1)流程图 用户端访问时,请求直接发送给redis,假如redis有数据就可以直接返给用户,假如redis没有,他就会调取数据库上的数据,用户写入的时候是直接写到了数据库上 (2)实验环境 本次实验一共需要三个节点,在这里选取server2,server3和server4,其中server2作为redis节点,必须是master; server3是作为lamp架构,在这里一定要注意选取一个干净的server节点去重...

weixin_43803940的博客 1853

【MATLAB代码】雷达观测目标跟踪模型|H-infinity Filter(H无穷大滤波)与EKF(扩展卡尔曼滤波)的对比。附完整代码,订阅专栏后可直接查看

对比了经典扩展卡尔曼滤波(EKF)与H∞优化的EKF(H∞-EKF)在目标跟踪中的性能。通过MATLAB仿真实验,结果显示:在存在模型误差和测量噪声的情况下,H∞-EKF相比经典EKF在位置误差上降低

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 243

2020-3-16 LAMP架构网站搭建

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python 常用来搭建动态网站或者服务器的开源软件,该软件开发的项目在软件方面的投资成本较低,共同组成了一个强大的Web应用程序平台。 目前LAMP架构是大多数中小企业最青睐的PHP架构选择,也是众多Linux SA喜欢选择的一套架构。那接下来我们就用最常见的Linux+Apache+Mysql+PHP实战来操作一下,如果来...

leizhenbing的博客 313

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lamp架构之redis(3):redis和mysql的整合

redis和mysql的整合一、redis结合mysql1.redis和mysql的基础概念2.redis和mysql的区别总结3.为什么要作缓存4.redis作为缓存二、环境部署三、mysql+redis部署 一、redis结合mysql 1.redis和mysql的基础概念 mysql:数据放在磁盘 是关系型数据库,主要用于存放持久化数据, redis:数据放在内存 AOF:增量更新 RDB:覆盖 是NOSQL,非关系型数据库。 2.redis和mysql的区别总结 (1)类型上 从类型上来说,mysq

weixin_44717560的博客 3544

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LAMP架构 【3】

一、配置防盗链 防盗链,用于防止链接被其他网站盗用导致占用服务器的流量,此时可以通过限制referer来防止链接被盗用。 防盗链:通俗来说,就是不让别人盗用你网站上的资源。 打开虚拟主机配置文件 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,增加内容如下,保存退出 <Directory /data/ww...

weixin_42604768的博客 215

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LAMP企业架构拓展实战原理,3步能彻底搞清楚!

LAMP(Linux+Apache+MySQL/MariaDB+Perl/PHP/Python)是一组用来搭建动态网站的开源软件架构,本身是各自独立的软件服务,放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。 本章向读者介绍互联网主流企业架构LAMP应用案例、PHP解释性语言详解、LAMP组合通信原理、LAMP企业源码架设、LAMP拓展及使用Redis提升LAMP性能...

weixin_45284484的博客 396

LAMP架构 3

配置防盗链   防止别人盗用自己网站上的资源 1. 修改虚拟主机配置文件 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加 &lt;Directory /data/wwwroot/111.com&gt; //定义目录。防盗链的目录其实就是这个站点 SetEnvIfNoCase Referer "http://111...

aaahai的博客 359

架构——3——LAMP(单台/分布式)

单台服务器使用 rpm 包安装 lamp,并发布 Discuz 论坛 1、桥接网卡,测试ping通外网,关闭防火墙和selinux [root@localhost ~]# hostnamectl set-hostname lamp [root@localhost ~]# bash [root@lamp ~]# 2、使用yum安装httpd mariadb php [root@lamp ~]# yum -y install httpd mariadb-server mariadb php php-my

lin小将的博客 500

Ansible 搭建多台lamp架构(3)

至此,文章终于到了尾声。以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频。

2401_84689601的博客 444

LAMP架构(3)

设置防盗链防盗链的作用是,我们网站的图片,只能通过我们自己的网站去访问,其他网站借用不行。 比如:我们的网站,被用户上传了很多图片,而用户又在他自己的网站上加上了我们网站图片的链接,就直接能访问了。 这样可以节省他网站的带宽一、图片防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方...

weixin_42347510的博客 190

linux操作系统基础(3)lamp架构的搭建和使用

(1)构建LAMP(LINUX + APACHE + MYSQL + PHP)网站 A安装必要的软件 1.Install SSH Client and Server (for my remote access) sudo apt-get install ssh 2. Install Database Server(传言现在只能装5.0的版本,别的我没实践过) sudo apt-get

define_us的专栏 395

64bit CentOS搭建基于LAMP架构的discuz 3.2论坛

LAMP=Linux+Apache+Mysql+PHP 安装Apache web服务器 yum install -y httpd 安装数据库服务器 yum install -y mysql mysql-server 安装PHP yum install -y php php-common php-mysql php-gd安装PHP优化,此优化能提速几倍的速度 yum insta

cpuwolf的成长笔记 2817

php5.3获取shell,自动安装lamp架构的shell脚本,版本都比较新,php5.3.8

采用自动安装脚本安装lamp架构是个很舒服的事情!当然这里面和很多其他安装步骤一样会产生一些问题。以下shell脚本是转载来的。我更改了部分内容,以适应我的需求。mysql会有点儿问题,所以我还是用yum insyall mysql安装此脚本里面没有chkconfig httpd的自启动,所以我添加了一下#!/bin/bash#version:2011-9-16#create by roc#dis...

weixin_30320081的博客 119

LAMP环境搭建

LAMP架构搭建详细讲解以及文档,快速理清LAMP访问机制的思路,运维路上不困难。

2302_77503226的博客 914

lamp-cloud 多租户架构指南:3种隔离方案与微服务链路拆解

lamp-cloud 是一个基于 SpringCloud + SpringBoot 的多租户 SaaS 微服务中后台开发平台,主打数据库隔离、SCHEMA 隔离、字段隔离三种插拔式租户方案,同时兼容 JDK 8 / 11 / 17 / 21。如果你要搭一套"一套代码卖多家企业"的 SaaS 系统,它把租户隔离、统一认证、数据权限这些最烦的活都预置好了。 和常见的脚手架不同,lamp-cloud

gitblog_00306的博客 303
上一篇: 【LAMP架构-2】
下一篇: 【zabbix企业级监控平台-1】
insertYam
博客等级 码龄3年 2粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值