忙活了好几天,度娘也查了好几天,最后在自己的服务器搞起了ipv6网络,最后终于搞定了对ipv6的改造工作。
Mysql(这个最简单)
1.修改my.cnf配置
// 修改mysql配置文件
vim /etc/my.cnf
// 添加对ipv6的支持
[mysqld]
bind-address = ::
2.springboot中application.yml修改jdbc连接
url: jdbc:mysql://address=(protocol=tcp)(host=2409:8c20:399:1000::aea:7408)(port=3306)/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
3.启动项目,测试mysql
Mongodb(一般)
1.修改mongodb.conf文件,保存文件后重启进程即可
bind_ip = 0.0.0.0,::
ipv6=true
2.修改application.yml中mongodb连接配置
spring:
mongodb:
url: 2409:8c20:399:1000::aea:7407/27017, 2409:8c20:399:1000::aea:7408/27017, 2409:8c20:399:1000::aea:7409/27017
database: test
username: admin
password: 123456
3.重写mongodb连接
package com.chinamobile.cmss.mg.ar.core.common.config;
import com.mongodb.*;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class MongoConfig {
@Value("${spring.mongodb.url}")
private String url;
@Value("${spring.mongodb.database}")
private String database;
@Value("${spring.mongodb.username}")
private String username;
@Value("${spring.mongodb.password}")
private String password;
@Bean
public MongoClient rawClient(){
MongoCredential credential=MongoCredential.createCredential(username ,database , password.toCharArray());
String[] split = url.split(",");
List<ServerAddress> serverAddressList = new ArrayList<>();
for(String str : split) {
String[] hostUrl = str.split("/");
ServerAddress serverAddress = new ServerAddress(hostUrl[0], Integer.parseInt(hostUrl[1]));
serverAddressList.add(serverAddress);
}
MongoClientSettings setting=MongoClientSettings.builder()
.credential(credential)
.applyToClusterSettings(builder ->
builder.hosts(serverAddressList)
).build();
return MongoClients.create(setting);
}
@Bean
public MongoDatabaseFactory mongoDatabaseFactory(){
//注册一个MongoDatabaseFactory,连接到指定数据库
return new SimpleMongoClientDatabaseFactory(rawClient(), database);
}
@Bean
public MongoTemplate mongoTemplate(){
//将MongoDatabaseFactory作为参数,注册MongoTemplate
return new MongoTemplate(mongoDatabaseFactory());
}
}
4.启动项目,测试mongodb
Redis(不好搞)
我是弄成集群模式的,单机的不太清楚,勿怪
1.修改集群中每个redis.conf
bind 0.0.0.0 ::
protected-mode no
port 7006
daemonize yes
requirepass 123456
cluster-enabled yes
cluster-config-file nodes-7006.conf
2.启动redis集群模式,网上很多教学,就不在这里说了
3.修改application.yml中redis连接配置
spring.redis:
nodes: 2409:8c20:399:1000::aea:7404/6379,2409:8c20:399:1000::aea:7405/6379,2409:8c20:399:1000::aea:7406/6379,2409:8c20:399:1000::aea:7407/6379,2409:8c20:399:1000::aea:7408/6379,2409:8c20:399:1000::aea:7409/6379
password: 123456
timeout: 6000
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
4.用jedisCluster重写redis连接
package com.chinamobile.cmss.mg.ar.core.common;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import java.util.HashSet;
import java.util.Set;
@Configuration
@PropertySource("classpath:application.yml")
public class JedisClusterConfig {
@Value("${spring.redis.nodes}")
private String clusterNodes;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.timeout}")
private Integer timeout;
@Value("${spring.redis.max-active}")
private Integer maxActive;
@Value("${spring.redis.max-wait}")
private Integer maxWait;
@Value("${spring.redis.max-idle}")
private Integer maxIdle;
@Value("${spring.redis.min-idle}")
private Integer minIdle;
@Bean
public JedisCluster getJedisCluster() {
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxWaitMillis(maxWait);
config.setMinIdle(minIdle);
config.setMaxIdle(maxIdle);
// 获取集群ip数组;
String[] serverArray = clusterNodes.split(",");
Set<HostAndPort> nodes = new HashSet<>();
for (String ipPort : serverArray) {
// 分割ip和port
String[] ipPortPair = ipPort.split("/",2);
nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim())));
}
JedisCluster jedisCluster = new JedisCluster(nodes,timeout,timeout,1,password ,config);
return jedisCluster;
}
}
5. 启动项目 测试redis
总结,搞了好几天,出了很多问题。其中最重要的还是要确定自己本地的环境是否支持ipv6。推荐个网站,可以测试自己本地网络是否可以连接ipv6。Test your IPv6.